From 94428695b5ae140b5382b21a0b370961efb44c77 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 12:40:05 +0100 Subject: [PATCH 001/243] cleaned and re-installed --- package-lock.json | 11116 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 8597 insertions(+), 2519 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9171a8cc..c91a9a3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.18", + "version": "3.0.19", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -12,6 +12,246 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/core": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", + "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.2.2", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.2.2", + "@babel/types": "^7.2.2", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "@babel/generator": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", + "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "requires": { + "@babel/types": "^7.2.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz", + "integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==", + "requires": { + "@babel/types": "^7.0.0", + "esutils": "^2.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", + "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-define-map": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", + "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", + "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.10" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "requires": { + "lodash": "^4.17.10" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", + "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.2.3", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==", + "requires": { + "@babel/template": "^7.1.2", + "@babel/traverse": "^7.1.5", + "@babel/types": "^7.2.0" + } + }, "@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", @@ -22,6 +262,367 @@ "js-tokens": "^4.0.0" } }, + "@babel/parser": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz", + "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", + "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.2.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", + "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", + "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", + "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.10" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", + "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.1.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz", + "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", + "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz", + "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", + "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", + "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", + "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", + "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", + "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", + "requires": { + "@babel/helper-call-delegate": "^7.1.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz", + "integrity": "sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "requires": { + "regenerator-transform": "^0.13.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", + "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, "@babel/polyfill": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", @@ -31,6 +632,98 @@ "regenerator-runtime": "^0.12.0" } }, + "@babel/preset-env": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz", + "integrity": "sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.2.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.2.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.2.0", + "@babel/plugin-transform-classes": "^7.2.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.2.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", + "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, "@capacitor/android": { "version": "1.0.0-beta.13", "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-1.0.0-beta.13.tgz", @@ -84,6 +777,11 @@ "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-1.0.0-beta.13.tgz", "integrity": "sha512-geGWOefd2N92wHOOU4ERV6meQFFu7Ahboz12XYY1S3VTt0oN05edqQ/6ryitsEXvxXba6HM3Lg/oK6iIs7OXFQ==" }, + "@iarna/toml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.1.tgz", + "integrity": "sha512-I2EjI9TbEFJNLziNPFfpo64PNanOaK17iL2kTW/jGlGOa4bvHw4VEied83kOEB7NJjXf1KfvmsQ2aEjy3xjiGg==" + }, "@ionic/discover": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@ionic/discover/-/discover-0.3.3.tgz", @@ -371,604 +1069,811 @@ "core-js": "^2.5.7" } }, - "@stencil/dev-server": { - "version": "0.0.18-1", - "resolved": "https://registry.npmjs.org/@stencil/dev-server/-/dev-server-0.0.18-1.tgz", - "integrity": "sha512-vcScnv0QPYQ4QBaHpYc19CudYjWCot32J7LaymZhSYqEI6eo8n0dYVFy7N1979we5L/x252+6vOzx66hvMfs9Q==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "requires": { - "@ionic/discover": "^0.3.3", - "chokidar": "^1.7.0", - "ecstatic": "^2.2.1", - "opn": "^5.1.0", - "tiny-lr": "^1.0.5" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, - "@types/tar": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/tar/-/tar-4.0.0.tgz", - "integrity": "sha512-YybbEHNngcHlIWVCYsoj7Oo1JU9JqONuAlt1LlTH/lmL8BMhbzdFUgReY87a05rY1j8mfK47Del+TCkaLAXwLw==", + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", "requires": { - "@types/node": "*" - } - }, - "@vue/component-compiler-utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz", - "integrity": "sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^6.0.20", - "postcss-selector-parser": "^3.1.1", - "prettier": "1.13.7", - "source-map": "^0.5.6", - "vue-template-es2015-compiler": "^1.6.0" - } - }, - "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==" - }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==" - }, - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "@parcel/logger": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.0.tgz", + "integrity": "sha512-lIRfDg+junbFUUeU0QtHX00gKCgEsYHZydFKwrJ8dc0D+WE2SYT1FcVCgpPAfKYgtg0QQMns8E9vzT9UjH92PQ==", "requires": { - "arr-flatten": "^1.0.1" + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + } + } } }, - "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==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "ast-types": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz", - "integrity": "sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw==" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "@parcel/watcher": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.11.0.tgz", + "integrity": "sha512-1ySF0sH06jyhpaErW1UWC7BNgkAl6PJyBjuu2cLTW1o71J2iQqgGt95cbuqmfmjI3l0xYN+nauDFqHERaj7Z8A==", "requires": { - "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" + "@parcel/utils": "^1.11.0", + "chokidar": "^2.0.3" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "is-descriptor": "^1.0.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "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==", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "kind-of": "^6.0.0" + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "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==", + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "requires": { - "kind-of": "^6.0.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ms": "2.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" - }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", - "dev": true - }, - "bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "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==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "@stencil/dev-server": { + "version": "0.0.18-1", + "resolved": "https://registry.npmjs.org/@stencil/dev-server/-/dev-server-0.0.18-1.tgz", + "integrity": "sha512-vcScnv0QPYQ4QBaHpYc19CudYjWCot32J7LaymZhSYqEI6eo8n0dYVFy7N1979we5L/x252+6vOzx66hvMfs9Q==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@ionic/discover": "^0.3.3", + "chokidar": "^1.7.0", + "ecstatic": "^2.2.1", + "opn": "^5.1.0", + "tiny-lr": "^1.0.5" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + }, + "@types/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz", + "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==" + }, + "@types/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, + "@types/tar": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-4.0.0.tgz", + "integrity": "sha512-YybbEHNngcHlIWVCYsoj7Oo1JU9JqONuAlt1LlTH/lmL8BMhbzdFUgReY87a05rY1j8mfK47Del+TCkaLAXwLw==", "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "@types/node": "*" } }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "@vue/component-compiler-utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz", + "integrity": "sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^6.0.20", + "postcss-selector-parser": "^3.1.1", + "prettier": "1.13.7", + "source-map": "^0.5.6", + "vue-template-es2015-compiler": "^1.6.0" } }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" - }, - "builtin-modules": { + "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=" + "acorn": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==" + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "requires": { - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "es6-promisify": "^5.0.0" } }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "ajv": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", "requires": { - "callsites": "^0.2.0" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "callsites": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "ansi-escapes": { + "version": "3.1.0", + "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "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==", "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "color-convert": "^1.9.0" } }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + "ansi-to-html": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.9.tgz", + "integrity": "sha512-hwNdg2DNgCzsrvaNc+LDqSxJkpxf9oEt4R7KE0IeURXhEOlontEqNpXNiGeFBpSes8TZF+ZZ9sjB85QzjPsI6A==", + "requires": { + "entities": "^1.1.1" + } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, - "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==", + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, - "cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" + "sprintf-js": "~1.0.2" } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "restore-cursor": "^2.0.0" + "arr-flatten": "^1.0.1" } }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" + "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==" }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "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==", + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "requires": { - "color-name": "1.1.3" + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "compare-versions": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", - "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==" + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "ast-types": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz", + "integrity": "sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw==" }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=" + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "cookiejar": { + "atob": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", - "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==" - }, - "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=" + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "d": { + "babel-extract-comments": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", "requires": { - "es5-ext": "^0.10.9" + "babylon": "^6.18.0" } }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "ms": "^2.1.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, - "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=" + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + } + } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, - "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==", + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", "requires": { - "object-keys": "^1.0.12" + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "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" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -1007,2511 +1912,6674 @@ } } }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } - } + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "bindings": { + "version": "1.2.1", + "resolved": "http://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", "requires": { - "esutils": "^2.0.2" + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" } }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "dom7": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.2.tgz", - "integrity": "sha512-cGwWtpu7KY3JnbREGqG4EGC/u+1hyLfWVMqrqRjmwiO8d5i4B+0imLZAQ/cJbiXnjbs0pdIUzcUyeI9BbnyKNg==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "ssr-window": "^1.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "is-obj": "^1.0.0" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, - "ecstatic": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-2.2.1.tgz", - "integrity": "sha512-ztE4WqheoWLh3wv+HQwy7dACnvNY620coWpa+XqY6R2cVWgaAT2lUISU1Uf7JpdLLJCURktJOaA9av2AOzsyYQ==", + "brfs": { + "version": "1.6.1", + "resolved": "http://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", "requires": { - "he": "^1.1.1", - "mime": "^1.2.11", - "minimist": "^1.1.0", - "url-join": "^2.0.2" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" } }, - "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", - "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" - } + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { - "is-arrayish": "^0.2.1" + "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" } }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "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==", "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "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==", "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "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==", "requires": { - "es6-promise": "^4.0.3" + "pako": "~1.0.5" } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "browserslist": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.6.tgz", + "integrity": "sha512-kMGKs4BTzRWviZ8yru18xBpx+CyHG9eqgRbj9XbE3IMgtczf4aiA0Y1YCpVdvUieKGZ03kolSPXqTcscBCb9qw==", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "caniuse-lite": "^1.0.30000921", + "electron-to-chromium": "^1.3.92", + "node-releases": "^1.1.1" } }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "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==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "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" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "eslint": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", - "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", - "js-yaml": "^3.12.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.0.2", - "text-table": "^0.2.0" - } - }, - "eslint-config-airbnb-base": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", - "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", - "requires": { - "eslint-restricted-globals": "^0.1.1", - "object.assign": "^4.1.0", - "object.entries": "^1.0.4" - } + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, - "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { - "debug": "^2.6.9", - "resolve": "^1.5.0" + "callsites": "^2.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { + "callsites": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" } } }, - "eslint-module-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", - "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "requires": { - "debug": "^2.6.8", - "pkg-dir": "^1.0.0" + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000925", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000925.tgz", + "integrity": "sha512-jOgMZuEmPLaWhw1NQI9mjFiVvGHE+j5/ByXUIugG0yw2bIdoHD9Am1hOi6poaArWYXbxJn3cofRawq3ZxS/sng==" + }, + "caniuse-lite": { + "version": "1.0.30000925", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000925.tgz", + "integrity": "sha512-zcYupoUxtW46rOikuDF7vfL9N1Qe9ZuUBTz3n3q8fFsoJIs/h9UN6Vg/0QpjsmvImXw9mVc3g+ZBfqvUz/iALA==" + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + }, + "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==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "requires": { + "chalk": "^1.1.3" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ms": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "ms": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, - "eslint-plugin-import": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", - "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "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==", "requires": { - "contains-path": "^0.1.0", - "debug": "^2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.2.0", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0", - "resolve": "^1.6.0" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "is-descriptor": "^0.1.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "eslint-plugin-vue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.0.0.tgz", - "integrity": "sha512-mSv2Ebz3RaPP+XJO/mu7F+SdR9lrMyGISSExnarLFqqf3pF5wTmwWNrhHW1o9zKzKI811UVTIIkWJJvgO6SsUQ==", + "cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", "requires": { - "vue-eslint-parser": "^4.0.2" + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" } }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "restore-cursor": "^2.0.0" } }, - "eslint-utils": { + "cli-spinners": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==" + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, - "espree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", - "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "requires": { - "estraverse": "^4.0.0" - } + "clones": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/clones/-/clones-1.1.0.tgz", + "integrity": "sha1-h+kEEy1hQMXAtyAGwIwNBb17Y7M=" }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "requires": { - "estraverse": "^4.1.0" + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", + "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", "requires": { - "is-posix-bracket": "^0.1.0" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "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==", "requires": { - "fill-range": "^2.1.0" + "color-name": "1.1.3" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" }, "dependencies": { - "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==", + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "color": { + "version": "0.11.4", + "resolved": "http://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "requires": { - "is-plain-object": "^2.0.4" + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-string": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "^1.0.0" } } } }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } + "colors": { + "version": "1.1.2", + "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "is-extglob": "^1.0.0" + "delayed-stream": "~1.0.0" } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "command-exists": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "http://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "websocket-driver": ">=0.5.1" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "requires": { - "escape-string-regexp": "^1.0.5" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "date-now": "^0.1.4" } }, - "file-type": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", - "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "requires": { + "bluebird": "^3.1.1" + } }, - "file-uri-to-path": { + "constants-browserify": { "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==" + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=" + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "safe-buffer": "~5.1.1" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", + "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==" + }, + "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=" + }, + "cosmiconfig": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", + "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } } }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { - "is-callable": "^1.1.3" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { - "for-in": "^1.0.1" + "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" } }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + "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==", + "requires": { + "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" + } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "css-color-names": { + "version": "0.0.4", + "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", "requires": { - "map-cache": "^0.2.2" + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "framework7": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/framework7/-/framework7-3.6.3.tgz", - "integrity": "sha512-c67Ii69+wrqOxy17nHtbawNLzj/meclyWfui+XOhhv5A0vstDc2sooaJDREYZixIOAqtcYl4AL2dCyx9uRHEAQ==", + "css-select": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", + "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", "requires": { - "dom7": "^2.1.2", - "path-to-regexp": "^2.4.0", - "ssr-window": "^1.0.1", - "template7": "^1.4.0" + "boolbase": "^1.0.0", + "css-what": "^2.1.2", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "framework7-vue": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/framework7-vue/-/framework7-vue-3.6.3.tgz", - "integrity": "sha512-8YDT7YEefZ+x/VHpu7XLL0dRWI9y06K356/3i+i3atPDFo8FQDj05KVZNP0aqeehRgi0OCX5JxkIGF2Ij2Tstw==" + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "css-tree": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", + "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" } }, - "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "requires": { - "minipass": "^2.2.1" - } + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "cssnano": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.8.tgz", + "integrity": "sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.6", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cssnano-preset-default": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz", + "integrity": "sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.0", + "postcss-colormin": "^4.0.2", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.1", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.10", + "postcss-merge-rules": "^4.0.2", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.1", + "postcss-minify-params": "^4.0.1", + "postcss-minify-selectors": "^4.0.1", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.1", + "postcss-normalize-positions": "^4.0.1", + "postcss-normalize-repeat-style": "^4.0.1", + "postcss-normalize-string": "^4.0.1", + "postcss-normalize-timing-functions": "^4.0.1", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.1", + "postcss-ordered-values": "^4.1.1", + "postcss-reduce-initial": "^4.0.2", + "postcss-reduce-transforms": "^4.0.1", + "postcss-svgo": "^4.0.1", + "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "optional": true, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "ms": "2.0.0" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "requires": { + "css-tree": "1.0.0-alpha.29" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", "requires": { - "minipass": "^2.2.1" + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" } - }, - "fs.realpath": { + } + } + }, + "d": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "^0.10.9" + } + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, + "deasync": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.14.tgz", + "integrity": "sha512-wN8sIuEqIwyQh72AG7oY6YQODCxIp1eXzEZlZznBuwDF8Q03Tdy9QNp1BNZXeadXoklNrw+Ip1fch+KXo/+ASw==", + "requires": { + "bindings": "~1.2.1", + "node-addon-api": "^1.6.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "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=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + } + } + }, + "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==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "kind-of": "^6.0.0" } }, - "glob": { - "version": "7.1.2", - "bundled": true, - "optional": true, + "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==", "requires": { - "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" + "kind-of": "^6.0.0" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "optional": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "safer-buffer": "^2.1.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "ignore-walk": { + "isobject": { "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "dom7": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.2.tgz", + "integrity": "sha512-cGwWtpu7KY3JnbREGqG4EGC/u+1hyLfWVMqrqRjmwiO8d5i4B+0imLZAQ/cJbiXnjbs0pdIUzcUyeI9BbnyKNg==", + "requires": { + "ssr-window": "^1.0.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + }, + "dotenv-expand": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "ecstatic": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-2.2.1.tgz", + "integrity": "sha512-ztE4WqheoWLh3wv+HQwy7dACnvNY620coWpa+XqY6R2cVWgaAT2lUISU1Uf7JpdLLJCURktJOaA9av2AOzsyYQ==", + "requires": { + "he": "^1.1.1", + "mime": "^1.2.11", + "minimist": "^1.1.0", + "url-join": "^2.0.2" + }, + "dependencies": { "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "editorconfig": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz", + "integrity": "sha512-GWjSI19PVJAM9IZRGOS+YKI8LN+/sjkSjNyvxL5ucqP9/IqtYNXBaQ/6c/hkPNYQHyOHra2KoXZI/JVpuqwmcQ==", + "requires": { + "@types/node": "^10.11.7", + "@types/semver": "^5.5.0", + "commander": "^2.19.0", + "lru-cache": "^4.1.3", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.96", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz", + "integrity": "sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==" + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, - "once": { - "version": "1.4.0", - "bundled": true, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "eslint": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", + "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "imurmurhash": "^0.1.4", + "inquirer": "^6.1.0", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" + } + }, + "eslint-config-airbnb-base": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", + "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "requires": { + "eslint-restricted-globals": "^0.1.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "wrappy": "1" + "ms": "2.0.0" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "ms": "2.0.0" } }, - "path-is-absolute": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-vue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.0.0.tgz", + "integrity": "sha512-mSv2Ebz3RaPP+XJO/mu7F+SdR9lrMyGISSExnarLFqqf3pF5wTmwWNrhHW1o9zKzKI811UVTIIkWJJvgO6SsUQ==", + "requires": { + "vue-eslint-parser": "^4.0.2" + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==" + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + }, + "espree": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", + "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "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==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "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" + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "falafel": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", + "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "requires": { + "acorn": "^5.0.0", + "foreach": "^2.0.5", + "isarray": "0.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-glob": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.4.tgz", + "integrity": "sha512-FjK2nCGI/McyzgNtTESqaWP3trPvHyRyoyY70hxjc3oKPNmDe8taohLZpoVKoUjW85tbU5txaYUZCNtVzygl1g==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "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==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, + "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==" + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "framework7": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/framework7/-/framework7-3.6.3.tgz", + "integrity": "sha512-c67Ii69+wrqOxy17nHtbawNLzj/meclyWfui+XOhhv5A0vstDc2sooaJDREYZixIOAqtcYl4AL2dCyx9uRHEAQ==", + "requires": { + "dom7": "^2.1.2", + "path-to-regexp": "^2.4.0", + "ssr-window": "^1.0.1", + "template7": "^1.4.0" + } + }, + "framework7-vue": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/framework7-vue/-/framework7-vue-3.6.3.tgz", + "integrity": "sha512-8YDT7YEefZ+x/VHpu7XLL0dRWI9y06K356/3i+i3atPDFo8FQDj05KVZNP0aqeehRgi0OCX5JxkIGF2Ij2Tstw==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "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": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==" + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-uri": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", + "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "3", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "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" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, + "globals": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "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=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "htmlnano": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.1.10.tgz", + "integrity": "sha512-eTEUzz8VdWYp+w/KUdb99kwao4reR64epUySyZkQeepcyzPQ2n2EPWzibf6QDxmkGy10Kr+CKxYqI3izSbmhJQ==", + "requires": { + "cssnano": "^3.4.0", + "object-assign": "^4.0.1", + "posthtml": "^0.11.3", + "posthtml-render": "^1.1.4", + "svgo": "^1.0.5", + "terser": "^3.8.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "requires": { + "q": "^1.1.2" + } + }, + "cssnano": { + "version": "3.10.0", + "resolved": "http://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "http://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "http://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "requires": { + "postcss": "^5.0.16" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + } + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "http://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "http://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "http://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "http://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "requires": { + "postcss": "^5.0.5" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "http://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "http://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "http://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + }, + "dependencies": { + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "http://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "htmlparser2": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", + "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==" + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "requires": { + "ansi-regex": "^4.0.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "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==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "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=" + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "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==", + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "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==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "requires": { + "punycode": "2.x.x" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "jimp": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.0.tgz", + "integrity": "sha512-RYpN+AAlTEMf8Bnkhq2eeTNyr70rDK/2UUfUqzBJmwmZwdR6fxRJvgbCGWT1BDVRxaAqo+4CWm8ePBxOIsr4jg==", + "requires": { + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.6.0", + "@jimp/plugins": "^0.6.0", + "@jimp/types": "^0.6.0", + "core-js": "^2.5.7" + } + }, + "joi": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", + "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", + "requires": { + "hoek": "4.x.x", + "isemail": "3.x.x", + "topo": "2.x.x" + } + }, + "jpeg-js": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", + "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==" + }, + "js-base64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", + "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" + }, + "js-beautify": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.9.tgz", + "integrity": "sha512-MwPmLywK9RSX0SPsUJjN7i+RQY9w/yC17Lbrq9ViEefpLRgqAR2BgrMN2AbifkUuhDV8tRauLhLda/9+bE0YQA==", + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.2", + "glob": "^7.1.3", + "mkdirp": "~0.5.0", + "nopt": "~4.0.1" + } + }, + "js-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", + "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "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==" + }, + "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==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json5": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==" + }, + "load-bmfont": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", + "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "requires": { + "es5-ext": "~0.10.2" + } + }, + "magic-string": { + "version": "0.22.5", + "resolved": "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "requires": { + "vlq": "^0.2.2" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + }, + "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==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memoizee": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", + "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "requires": { + "d": "1", + "es5-ext": "^0.10.45", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.5" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "merge2": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", + "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "requires": { + "mime-db": "~1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "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==" + }, + "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=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "requires": { + "minipass": "^2.2.1" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": 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" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "string-width": "^1.0.2" + "is-plain-object": "^2.0.4" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true } } }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" + "minimist": "0.0.8" + } + }, + "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==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "http://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "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" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "string_decoder": { - "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "get-uri": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", - "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", - "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "3", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "2" + "node-addon-api": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.2.tgz", + "integrity": "sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA==" + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "ms": "2.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" } } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "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" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "node-releases": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz", + "integrity": "sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "semver": "^5.3.0" } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "is-glob": "^2.0.0" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "function-bind": "^1.1.1" + "remove-trailing-separator": "^1.0.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "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=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "path-key": "^2.0.0" } }, - "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=", + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "boolbase": "~1.0.0" } }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "agent-base": "4", - "debug": "3.1.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "ms": "2.0.0" + "is-descriptor": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, - "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "isobject": "^3.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" } }, - "inherits": { + "object.getownpropertydescriptors": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } }, - "inquirer": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", - "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.0", - "figures": "^2.0.0", - "lodash": "^4.17.10", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.1.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" }, "dependencies": { - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==" - }, - "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "requires": { - "ansi-regex": "^4.0.0" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" + } }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "omggif": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", + "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=" }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { - "kind-of": "^3.0.2" + "ee-first": "1.1.1" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "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=", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "binary-extensions": "^1.0.0" + "wrappy": "1" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", "requires": { - "builtin-modules": "^1.0.0" + "is-wsl": "^1.1.0" } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "ora": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", + "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", "requires": { - "kind-of": "^3.0.2" + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" } }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "os-homedir": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "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==" - } + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + "os-tmpdir": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "is-primitive": "^2.0.0" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, - "is-extglob": { + "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, - "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=" + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, - "is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pac-proxy-agent": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", + "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", "requires": { - "is-extglob": "^1.0.0" + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^3.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + } } }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", "requires": { - "kind-of": "^3.0.2" + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "pako": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", + "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==" }, - "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==", + "parcel-bundler": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.11.0.tgz", + "integrity": "sha512-H0w/Obx76vWiG+UtofznfcHZJBmd6JA5iCn7zrGBINyVAh+Nt/JLD6QDROghHLXfJkO4XyczsB+fO+nPbXlFfA==", "requires": { - "isobject": "^3.0.1" + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/runtime": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.0", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.11.0", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "cross-spawn": "^6.0.4", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^4.2.0", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.1.9", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.5", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^1.1.1", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" }, "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "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==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, - "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==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "jimp": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.0.tgz", - "integrity": "sha512-RYpN+AAlTEMf8Bnkhq2eeTNyr70rDK/2UUfUqzBJmwmZwdR6fxRJvgbCGWT1BDVRxaAqo+4CWm8ePBxOIsr4jg==", - "requires": { - "@babel/polyfill": "^7.0.0", - "@jimp/custom": "^0.6.0", - "@jimp/plugins": "^0.6.0", - "@jimp/types": "^0.6.0", - "core-js": "^2.5.7" - } - }, - "jpeg-js": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", - "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==" - }, - "load-bmfont": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", - "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", - "requires": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "parcel-plugin-sw-cache": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/parcel-plugin-sw-cache/-/parcel-plugin-sw-cache-0.2.6.tgz", + "integrity": "sha512-vVjuA5shRQiVNeDfgb5WJL4jPVG4m5tB7bXzEoLkaTvCHYI1qL8lU/bpLbig6QCAdzdk9hSGDGpBZsAopzWBwA==", + "requires": { + "replace-in-file": "^3.1.0", + "workbox-build": "^3.4.1" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", "requires": { - "chalk": "^2.0.1" + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", "requires": { - "es5-ext": "~0.10.2" + "for-each": "^0.3.2", + "trim": "0.0.1" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "requires": { - "object-visit": "^1.0.0" + "pinkie-promise": "^2.0.0" } }, - "math-random": { + "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "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=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", + "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" + "pify": "^2.0.0" } }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "pinkie": "^2.0.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "requires": { + "pngjs": "^3.0.0" + } }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "requires": { - "mime-db": "~1.37.0" + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "pngjs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", + "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==" + }, + "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=" + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "dom-walk": "^0.1.0" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", "requires": { - "brace-expansion": "^1.1.7" + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "postcss-colormin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz", + "integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "dependencies": { - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "postcss-discard-comments": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz", + "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==", "requires": { - "minipass": "^2.2.1" + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "postcss": "^7.0.0" }, "dependencies": { - "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==", + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "is-plain-object": "^2.0.4" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", "requires": { - "minimist": "0.0.8" + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "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==" - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "http://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "optional": true + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "http://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "requires": { - "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" + "postcss": "^5.0.14", + "uniqs": "^2.0.0" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } } } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "http://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "requires": { - "remove-trailing-separator": "^1.0.1" + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "postcss-merge-longhand": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz", + "integrity": "sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "is-descriptor": "^0.1.0" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" + "postcss-merge-rules": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz", + "integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", "requires": { - "isobject": "^3.0.1" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "omggif": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", - "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "postcss-minify-gradients": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz", + "integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==", "requires": { - "is-wsl": "^1.1.0" + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "postcss-minify-params": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz", + "integrity": "sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "ora": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", - "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", + "postcss-minify-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz", + "integrity": "sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==", "requires": { - "chalk": "^2.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.1", - "log-symbols": "^2.1.0" + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "requires": { - "p-try": "^1.0.0" + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==", "requires": { - "p-limit": "^1.1.0" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "pac-proxy-agent": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", - "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", + "postcss-normalize-positions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz", + "integrity": "sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==", "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^3.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "ms": "^2.1.1" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz", + "integrity": "sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" } }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "postcss-normalize-string": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz", + "integrity": "sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==", "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "pako": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", - "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==" - }, - "parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" - }, - "parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" - }, - "parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "postcss-normalize-timing-functions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", + "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==", "requires": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "parse-headers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", - "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", "requires": { - "for-each": "^0.3.2", - "trim": "0.0.1" + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "postcss-normalize-whitespace": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", + "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==", "requires": { - "error-ex": "^1.2.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "postcss-ordered-values": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", + "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==", "requires": { - "pinkie-promise": "^2.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "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=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-to-regexp": { + "postcss-reduce-idents": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", - "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - } - }, - "phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "resolved": "http://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "requires": { - "pinkie": "^2.0.0" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "pixelmatch": { + "postcss-reduce-initial": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", + "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==", "requires": { - "pngjs": "^3.0.0" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "postcss-reduce-transforms": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", + "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==", "requires": { - "find-up": "^1.0.0" + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" - }, - "pngjs": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", - "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==" - }, - "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=" + "postcss-svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", + "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, "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 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "posthtml": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.3.tgz", + "integrity": "sha512-quMHnDckt2DQ9lRi6bYLnuyBDnVzK+McHa8+ar4kTdYbWEo/92hREOu3h70ZirudOOp/my2b3r0m5YtxY52yrA==", + "requires": { + "object-assign": "^4.1.1", + "posthtml-parser": "^0.3.3", + "posthtml-render": "^1.1.0" + }, + "dependencies": { + "posthtml-parser": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.3.3.tgz", + "integrity": "sha512-H/Z/yXGwl49A7hYQLV1iQ3h87NE0aZ/PMZhFwhw3lKeCAN+Ti4idrHvVvh4/GX10I7u77aQw+QB4vV5/Lzvv5A==", + "requires": { + "htmlparser2": "^3.9.2", + "isobject": "^2.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "posthtml-parser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.1.tgz", + "integrity": "sha512-h7vXIQ21Ikz2w5wPClPakNP6mJeJCK6BT0GpqnQrNNABdR7/TchNlFyryL1Bz6Ww53YWCKkr6tdZuHlxY1AVdQ==", + "requires": { + "htmlparser2": "^3.9.2", + "object-assign": "^4.1.1" } }, + "posthtml-render": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.4.tgz", + "integrity": "sha512-jL6eFIzoN3xUEvbo33OAkSDE2VIKU4JQ1wENOows1DpfnrdapR/K3Q1/fB43Mq7wQlcSgRm23nFrvoioufM7eA==" + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -3520,8 +8588,17 @@ "prettier": { "version": "1.13.7", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", - "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", - "dev": true + "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==" + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process": { "version": "0.5.2", @@ -3538,6 +8615,11 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, "proxy-agent": { "version": "2.3.1", "resolved": "http://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", @@ -3573,16 +8655,79 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "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" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, "qs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz", "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==" }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", @@ -3605,6 +8750,28 @@ } } }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, "raw-body": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", @@ -3945,11 +9112,64 @@ "resolve": "^1.1.6" } }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "requires": { + "balanced-match": "^0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "requires": { + "regenerate": "^1.4.0" + } + }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" }, + "regenerator-transform": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "requires": { + "private": "^0.1.6" + } + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -3972,6 +9192,39 @@ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, + "regexpu-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", + "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -3987,6 +9240,26 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "replace-in-file": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.2.tgz", + "integrity": "sha512-wb2EU5MBBqUty+b1xSIqa0IKs5M2/a+4Ldw8KM5Gpe1btv16K0eii6nMxyNhAmRZhCEPrge0ss5Ij9f7vJEYcw==", + "requires": { + "chalk": "^2.4.1", + "glob": "^7.1.2", + "yargs": "^12.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, "require-uncached": { "version": "1.0.3", "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -4028,6 +9301,16 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -4036,6 +9319,15 @@ "glob": "^7.0.5" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -4075,6 +9367,14 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "safer-eval": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/safer-eval/-/safer-eval-1.2.3.tgz", + "integrity": "sha512-nDwXOhiheoaBT6op02n8wzsshjLXHhh4YAeqsDEoVmy1k2+lGv/ENLsGaWqkaKArUkUx48VO12/ZPa3sI/OEqQ==", + "requires": { + "clones": "^1.1.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -4085,6 +9385,76 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "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.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "serialize-to-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.1.tgz", + "integrity": "sha512-TK6d30GNkOLeFDPuP6Jfy1Q1V31GxzppYTt2lzr8KWmIUKomFj+260QP5o4AhHLu0pr6urgyS8i/Z1PqurjBoA==", + "requires": { + "js-beautify": "^1.7.5", + "safer-eval": "^1.2.3" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -4106,11 +9476,30 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -4134,11 +9523,31 @@ "rechoir": "^0.6.2" } }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, "slice-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", @@ -4282,6 +9691,14 @@ "socks": "^1.1.10" } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -4299,6 +9716,22 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -4350,6 +9783,19 @@ "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz", "integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg==" }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "static-eval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz", + "integrity": "sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw==", + "requires": { + "escodegen": "^1.8.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -4369,11 +9815,98 @@ } } }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + }, + "dependencies": { + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -4396,6 +9929,16 @@ "safe-buffer": "~5.1.0" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4416,11 +9959,52 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, + "stylehacks": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz", + "integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", @@ -4475,6 +10059,27 @@ "has-flag": "^3.0.0" } }, + "svgo": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz", + "integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==", + "requires": { + "coa": "~2.0.1", + "colors": "~1.1.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "~0.1.0", + "css-tree": "1.0.0-alpha.28", + "css-url-regex": "^1.1.0", + "csso": "^3.5.0", + "js-yaml": "^3.12.0", + "mkdirp": "~0.5.1", + "object.values": "^1.0.4", + "sax": "~1.2.4", + "stable": "~0.1.6", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, "table": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", @@ -4512,6 +10117,28 @@ "resolved": "https://registry.npmjs.org/template7/-/template7-1.4.0.tgz", "integrity": "sha512-NMJWbKIoowHixUYIHq+DLvcBM47t/oZ/xfvBbYuMusjjS6BUjC02+gLWctntJuTTiEqILfefBNCXbfp/EMt/zQ==" }, + "terser": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.13.1.tgz", + "integrity": "sha512-ogyZye4DFqOtMzT92Y3Nxxw8OvXmL39HOALro4fc+EUYFFF9G/kk0znkvwMz6PPYgBtdKAodh3FPR70eugdaQA==", + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4522,11 +10149,28 @@ "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "requires": { + "setimmediate": "^1.0.4" + } + }, "timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -4541,6 +10185,16 @@ "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.1.tgz", "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==" }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-inflate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz", + "integrity": "sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=" + }, "tiny-lr": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", @@ -4577,6 +10231,16 @@ "os-tmpdir": "~1.0.2" } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -4615,16 +10279,34 @@ } } }, + "topo": { + "version": "2.0.2", + "resolved": "http://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "requires": { + "hoek": "4.x.x" + } + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -4633,6 +10315,51 @@ "prelude-ls": "~1.1.2" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==" + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "http://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + } + } + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -4668,8 +10395,12 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, "universalify": { "version": "0.1.2", @@ -4681,6 +10412,11 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -4722,6 +10458,11 @@ } } }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -4735,6 +10476,22 @@ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, "url-join": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", @@ -4753,11 +10510,33 @@ "pako": "^1.0.5" } }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -4767,6 +10546,24 @@ "spdx-expression-parse": "^3.0.0" } }, + "vendors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", + "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, "vue": { "version": "2.5.21", "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.21.tgz", @@ -4801,7 +10598,6 @@ "version": "2.5.21", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz", "integrity": "sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw==", - "dev": true, "requires": { "de-indent": "^1.0.2", "he": "^1.1.0" @@ -4810,8 +10606,15 @@ "vue-template-es2015-compiler": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", - "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", - "dev": true + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==" + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } }, "websocket-driver": { "version": "0.7.0", @@ -4827,6 +10630,11 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -4835,11 +10643,195 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "workbox-background-sync": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz", + "integrity": "sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-broadcast-cache-update": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz", + "integrity": "sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-build": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.6.3.tgz", + "integrity": "sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g==", + "requires": { + "babel-runtime": "^6.26.0", + "common-tags": "^1.4.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.2", + "joi": "^11.1.1", + "lodash.template": "^4.4.0", + "pretty-bytes": "^4.0.2", + "stringify-object": "^3.2.2", + "strip-comments": "^1.0.2", + "workbox-background-sync": "^3.6.3", + "workbox-broadcast-cache-update": "^3.6.3", + "workbox-cache-expiration": "^3.6.3", + "workbox-cacheable-response": "^3.6.3", + "workbox-core": "^3.6.3", + "workbox-google-analytics": "^3.6.3", + "workbox-navigation-preload": "^3.6.3", + "workbox-precaching": "^3.6.3", + "workbox-range-requests": "^3.6.3", + "workbox-routing": "^3.6.3", + "workbox-strategies": "^3.6.3", + "workbox-streams": "^3.6.3", + "workbox-sw": "^3.6.3" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "workbox-cache-expiration": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz", + "integrity": "sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-cacheable-response": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz", + "integrity": "sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-core": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.6.3.tgz", + "integrity": "sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ==" + }, + "workbox-google-analytics": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz", + "integrity": "sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig==", + "requires": { + "workbox-background-sync": "^3.6.3", + "workbox-core": "^3.6.3", + "workbox-routing": "^3.6.3", + "workbox-strategies": "^3.6.3" + } + }, + "workbox-navigation-preload": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz", + "integrity": "sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-precaching": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.6.3.tgz", + "integrity": "sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-range-requests": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz", + "integrity": "sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-routing": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.6.3.tgz", + "integrity": "sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-strategies": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.6.3.tgz", + "integrity": "sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-streams": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.6.3.tgz", + "integrity": "sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w==", + "requires": { + "workbox-core": "^3.6.3" + } + }, + "workbox-sw": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.6.3.tgz", + "integrity": "sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4853,6 +10845,14 @@ "mkdirp": "^0.5.1" } }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", @@ -4898,10 +10898,88 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "requires": { + "p-try": "^2.0.0" + } + }, + "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==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } From 83e7b128dd0331f42a95b484e56baf470a2fef78 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 13:37:26 +0100 Subject: [PATCH 002/243] closes #471 --- scripts/helper/logger.js | 13 ++++++++++++- templates/app/config.json | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 4ddd0c59..401b2567 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -1,8 +1,19 @@ const clc = require('cli-color'); +const fs = require('fs-extra'); +const path = require('./path'); + +const level = fs.readJsonSync(path.app('config.json')).development.logLevel; module.exports = { + debug(msg) { + if (level === 'debug') { + console.log(clc.bold.cyan('[DEBUG]'), clc.bold(msg)); // eslint-disable-line no-console + } + }, info(msg) { - console.log(clc.bold.blue('[INFO]'), clc.bold(msg)); // eslint-disable-line no-console + if (level === 'debug' || level === 'info') { + console.log(clc.bold.blue('[INFO]'), clc.bold(msg)); // eslint-disable-line no-console + } }, success(msg) { console.log(clc.bold.green('[SUCCESS]'), clc.bold(msg)); // eslint-disable-line no-console diff --git a/templates/app/config.json b/templates/app/config.json index d0f96adf..3ac2ee91 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -19,6 +19,7 @@ }, "development": { + "logLevel": "debug" }, "production": { From 435a8c3b6ed8652edee08009752388074ca062d1 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 14:12:33 +0100 Subject: [PATCH 003/243] shortlink to templates path --- scripts/build-pwa.js | 6 +++--- scripts/create-app-folder.js | 2 +- scripts/helper/path.js | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index be667a63..17473845 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -11,7 +11,7 @@ const config = fs.readJsonSync(path.app('config.json')); // Prepare index.html file const cachedIndexFile = path.cache('build-pwa/index.html'); -let indexFileContent = fs.readFileSync(path.framework('templates/index.html'), { encoding: 'utf8' }); +let indexFileContent = fs.readFileSync(path.templates('index.html'), { encoding: 'utf8' }); indexFileContent = indexFileContent.replace(/\{name\}/g, config.meta.name); indexFileContent = indexFileContent.replace(/\{description\}/g, config.meta.description); indexFileContent = indexFileContent.replace(/\{language\}/g, config.meta.language); @@ -22,7 +22,7 @@ log.success('Prepared index file.'); // Prepare manifest file const cachedManifestFile = path.cache('build-pwa/manifest.webmanifest'); -const manifestFileContent = fs.readJsonSync(path.framework('templates/manifest.webmanifest')); +const manifestFileContent = fs.readJsonSync(path.templates('manifest.webmanifest')); manifestFileContent.name = config.meta.name; manifestFileContent.short_name = config.meta.shortName; manifestFileContent.description = config.meta.description; @@ -47,7 +47,7 @@ log.success('Prepared manifest file.'); // Prepare main.js file const cachedMainFile = path.cache('build-pwa/main.js'); -let mainFileContent = fs.readFileSync(path.framework('templates/main.js'), { encoding: 'utf8' }); +let mainFileContent = fs.readFileSync(path.templates('main.js'), { encoding: 'utf8' }); mainFileContent = mainFileContent.replace('./app/app.vue', path.relative(path.cache('build-pwa'), path.app('app.vue'))); fs.writeFileSync(cachedMainFile, mainFileContent); log.success('Prepared main script file.'); diff --git a/scripts/create-app-folder.js b/scripts/create-app-folder.js index 9c3adeee..a7a6e921 100644 --- a/scripts/create-app-folder.js +++ b/scripts/create-app-folder.js @@ -2,7 +2,7 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -const sourceFolder = path.framework('templates/app'); +const sourceFolder = path.templates('app'); const destFolder = path.app(); if (path.project() === path.framework()) { diff --git a/scripts/helper/path.js b/scripts/helper/path.js index ad76bae0..8bc3fda5 100644 --- a/scripts/helper/path.js +++ b/scripts/helper/path.js @@ -5,6 +5,7 @@ const isInstalled = fs.pathExistsSync(path.resolve(__dirname, '../../../../packa // Framework related shortcuts path.framework = (...nav) => path.resolve(__dirname, '../../', ...nav); +path.templates = (...nav) => path.resolve(__dirname, '../../templates', ...nav); path.scripts = (...nav) => path.resolve(__dirname, '../', ...nav); path.cache = (...nav) => path.resolve(__dirname, '../../.cache', ...nav); From 2d226132ce6aa7ffc213f26798cc6f6d441bc587 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 14:51:37 +0100 Subject: [PATCH 004/243] dev build --- package-lock.json | 5 +++++ package.json | 1 + scripts/dev.js | 37 +++++++++++++++++++++++++++++++++++++ templates/main.js | 4 ++-- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 scripts/dev.js diff --git a/package-lock.json b/package-lock.json index c91a9a3c..77f881ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10594,6 +10594,11 @@ } } }, + "vue-hot-reload-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.1.tgz", + "integrity": "sha512-AA86yKZ5uOKz87/q1UpngEXhbRkaYg1b7HMMVRobNV1IVKqZe8oLIzo6iMocVwZXnYitlGwf2k4ZRLOZlS8oPQ==" + }, "vue-template-compiler": { "version": "2.5.21", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz", diff --git a/package.json b/package.json index 784ee94f..fdd5d590 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "parcel-plugin-sw-cache": "^0.2.6", "shelljs": "^0.8.3", "vue": "^2.5.21", + "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } } diff --git a/scripts/dev.js b/scripts/dev.js new file mode 100644 index 00000000..54218bf6 --- /dev/null +++ b/scripts/dev.js @@ -0,0 +1,37 @@ +const shell = require('shelljs'); +const fs = require('fs-extra'); +const path = require('./helper/path'); +const log = require('./helper/logger'); + +// Define cache folder for development build +const cacheFolder = path.cache('buid-dev'); + +// Empty cache folder +fs.emptyDirSync(cacheFolder); + +// Read app config +const config = fs.readJsonSync(path.app('config.json')); + +// Prepare index.html file +const cachedIndexFile = path.cache(cacheFolder, 'index.html'); +let indexFileContent = fs.readFileSync(path.templates('index.html'), { encoding: 'utf8' }); +indexFileContent = indexFileContent.replace(/\{name\}/g, config.meta.name); +indexFileContent = indexFileContent.replace(/\{description\}/g, config.meta.description); +indexFileContent = indexFileContent.replace(/\{language\}/g, config.meta.language); +indexFileContent = indexFileContent.replace(/\{androidThemeColor\}/g, config.frontend.android.themeColor); +indexFileContent = indexFileContent.replace(/\{relatedITunesApplicationID\}/g, config.frontend.ios.relatedITunesApplicationID); +indexFileContent = indexFileContent.replace(//, ''); +fs.writeFileSync(cachedIndexFile, indexFileContent); +log.success('Prepared index file.'); + +// Prepare main.js file +const cachedMainFile = path.cache(cacheFolder, 'main.js'); +let mainFileContent = fs.readFileSync(path.templates('main.js'), { encoding: 'utf8' }); +mainFileContent = mainFileContent.replace('./app/app.vue', path.relative(path.cache(cacheFolder), path.app('app.vue'))); +fs.writeFileSync(cachedMainFile, mainFileContent); +log.success('Prepared main script file.'); + +// Build files +const parcelCacheFolder = path.cache('parcel'); +log.warning('Building development files - this may take a while ...'); +shell.exec(`npx parcel "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --open`); diff --git a/templates/main.js b/templates/main.js index 13163a19..b0b8ed42 100644 --- a/templates/main.js +++ b/templates/main.js @@ -15,9 +15,9 @@ export default new Vue({ render: c => c(App), }); -if ('serviceWorker' in navigator) { +if (process.env.NODE_ENV !== 'development' && 'serviceWorker' in navigator) { window.addEventListener('load', () => { - const swPath = 'service-worker.js'; + const swPath = 'sw.js'; navigator.serviceWorker.register(swPath).then((registration) => { if (process.env.NODE_ENV === 'development') { // eslint-disable-next-line no-console From 9dade161207d4508830610dd5eb1022b18086c20 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 15:11:27 +0100 Subject: [PATCH 005/243] changed version to beta --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fdd5d590..012b1354 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.19", + "version": "3.0.0-beta.1", "license": "MIT", "scripts": { "postinstall": "node scripts/postinstall", From 4212418fff7261facb3eabdb1d47fd72aa9cacc7 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 15:18:52 +0100 Subject: [PATCH 006/243] added alpha suffix to version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 012b1354..68447b6a 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-beta.1", + "version": "3.0.0-alpha.1", "license": "MIT", "scripts": { "postinstall": "node scripts/postinstall", From e0e6f3afb5854e3f1d23768499d1bb90633c5948 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 16:55:04 +0100 Subject: [PATCH 007/243] fix path --- scripts/update-package-file.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-package-file.js b/scripts/update-package-file.js index 9268b3e5..a61c0de1 100644 --- a/scripts/update-package-file.js +++ b/scripts/update-package-file.js @@ -15,7 +15,7 @@ if (content.name === undefined) content.name = path.basename(path.project()); if (content.version === undefined) content.version = '1.0.0'; // Update scripts -const prefix = `node ${isInstalled ? 'node_modules/app-framework/' : ''}scripts/`; +const prefix = `node ./${isInstalled ? 'node_modules/app-framework/' : ''}scripts/`; const scriptArr = [ 'postinstall', 'test-eslint', From 18aface164aa0c717610c8265a71fbf5033adba1 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 16:55:14 +0100 Subject: [PATCH 008/243] add readme file --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..653989e9 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# App Framework 3 + +> App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this project](https://github.com/scriptPilot/app-framework/projects/16) + +## Get Started + +1. Run `mkdir ` to create a new folder for the application +2. Run `cd ` to open the newly created folder +3. Run `echo {} > package.json` to create an empty package file +4. Run `npm install app-framework@latest` to install latest development release +5. Run `npm run dev` to open application on development server + +## CLI Commands + +- `npm run dev` to open application on development server +- `npm run build` to build application to */build* folder +- `npm update` to update App Framework and other dependencies From 419c4d869867b34d2fb57cf708db5d67e2f5b88c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 16:56:21 +0100 Subject: [PATCH 009/243] version bump --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 68447b6a..9a2d4154 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,13 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.1", + "version": "3.0.0-alpha.2", "license": "MIT", "scripts": { - "postinstall": "node scripts/postinstall", - "test-eslint": "node scripts/test-eslint", - "dev": "node scripts/dev", - "build": "node scripts/build" + "postinstall": "node ./scripts/postinstall", + "test-eslint": "node ./scripts/test-eslint", + "dev": "node ./scripts/dev", + "build": "node ./scripts/build" }, "dependencies": { "@capacitor/android": "^1.0.0-beta.13", From 902027d356dd8657dc1c6bcf000efeb12e0c7b18 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 17:11:35 +0100 Subject: [PATCH 010/243] typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 653989e9..0bfbb738 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # App Framework 3 -> App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this project](https://github.com/scriptPilot/app-framework/projects/16) +> App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this project](https://github.com/scriptPilot/app-framework/projects/16). ## Get Started From 1dc3af52205d5612d248f7354042cfad36f01791 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 17:11:49 +0100 Subject: [PATCH 011/243] updated dependencies --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 77f881ee..3d85ab11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.19", + "version": "3.0.0-alpha.2", "lockfileVersion": 1, "requires": true, "dependencies": { From 46511128247db2321794e13d93360e216b8c4bca Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 17:16:18 +0100 Subject: [PATCH 012/243] add default log level value --- package.json | 2 +- scripts/helper/logger.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9a2d4154..2bf9e7c3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.2", + "version": "3.0.0-alpha.3", "license": "MIT", "scripts": { "postinstall": "node ./scripts/postinstall", diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 401b2567..ad5a83e4 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -2,7 +2,8 @@ const clc = require('cli-color'); const fs = require('fs-extra'); const path = require('./path'); -const level = fs.readJsonSync(path.app('config.json')).development.logLevel; +const configFile = path.app('config.json') +const level = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).development.logLevel : 'debug'; module.exports = { debug(msg) { From ded4d57810d8b6bec27620b6ca0106d9fb9000b6 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 31 Dec 2018 17:18:54 +0100 Subject: [PATCH 013/243] issue list link --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 0bfbb738..34707410 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ > App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this project](https://github.com/scriptPilot/app-framework/projects/16). +You are invited to open any V3 related [question, bug or feature request](https://github.com/scriptPilot/app-framework/issues). + ## Get Started 1. Run `mkdir ` to create a new folder for the application From 77fe4ac74daaad38e13eb8d538cc3dc2b877c20c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 1 Jan 2019 12:22:01 +0100 Subject: [PATCH 014/243] milestone link instead of project link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34707410..efd199ba 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # App Framework 3 -> App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this project](https://github.com/scriptPilot/app-framework/projects/16). +> App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this milestone](https://github.com/scriptPilot/app-framework/milestone/8). You are invited to open any V3 related [question, bug or feature request](https://github.com/scriptPilot/app-framework/issues). From c107bd59084fd8e2dc8ecbf68826116b650919ed Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 1 Jan 2019 12:25:07 +0100 Subject: [PATCH 015/243] added --save command --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index efd199ba..fe13f48b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ You are invited to open any V3 related [question, bug or feature request](https: 1. Run `mkdir ` to create a new folder for the application 2. Run `cd ` to open the newly created folder 3. Run `echo {} > package.json` to create an empty package file -4. Run `npm install app-framework@latest` to install latest development release +4. Run `npm install --save app-framework@latest` to install latest development release 5. Run `npm run dev` to open application on development server ## CLI Commands From bcd1f6d5f9740e256e691f91f4c885cc60fdc187 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 1 Jan 2019 23:03:53 +0100 Subject: [PATCH 016/243] closes #813 --- README.md | 9 ++++++--- cli/app-build.js | 9 +++++++++ cli/app-dev.js | 9 +++++++++ cli/app-test.js | 9 +++++++++ cli/app.js | 10 ++++++++++ package.json | 9 +++++---- 6 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 cli/app-build.js create mode 100644 cli/app-dev.js create mode 100644 cli/app-test.js create mode 100755 cli/app.js diff --git a/README.md b/README.md index fe13f48b..66549850 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ You are invited to open any V3 related [question, bug or feature request](https: ## CLI Commands -- `npm run dev` to open application on development server -- `npm run build` to build application to */build* folder -- `npm update` to update App Framework and other dependencies +- `npx app dev` to open application on development server +- `npx app build` to build application to */build* folder + +## Update + +To update App Framework to latest development version, run `npm run update`. diff --git a/cli/app-build.js b/cli/app-build.js new file mode 100644 index 00000000..d578838f --- /dev/null +++ b/cli/app-build.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +const program = require('commander'); +const run = require('../scripts/helper/run') + +program + .parse(process.argv); + +run.script('build') diff --git a/cli/app-dev.js b/cli/app-dev.js new file mode 100644 index 00000000..a3ae1ace --- /dev/null +++ b/cli/app-dev.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +const program = require('commander'); +const run = require('../scripts/helper/run') + +program + .parse(process.argv); + +run.script('dev') diff --git a/cli/app-test.js b/cli/app-test.js new file mode 100644 index 00000000..f66fb29a --- /dev/null +++ b/cli/app-test.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +const program = require('commander'); +const run = require('../scripts/helper/run') + +program + .parse(process.argv); + +run.script('test') diff --git a/cli/app.js b/cli/app.js new file mode 100755 index 00000000..fd684463 --- /dev/null +++ b/cli/app.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node + +const program = require('commander'); +const { version } = require('../package.json') + +program + .version(version, '-v --version') + .command('dev', 'start development server') + .command('build', 'build application') + .parse(process.argv); diff --git a/package.json b/package.json index 2bf9e7c3..fd8c284a 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "repository": "https://github.com/scriptPilot/app-framework.git", "version": "3.0.0-alpha.3", "license": "MIT", + "bin": { + "app": "./cli/app.js" + }, "scripts": { - "postinstall": "node ./scripts/postinstall", - "test-eslint": "node ./scripts/test-eslint", - "dev": "node ./scripts/dev", - "build": "node ./scripts/build" + "postinstall": "node ./scripts/postinstall" }, "dependencies": { "@capacitor/android": "^1.0.0-beta.13", @@ -18,6 +18,7 @@ "@capacitor/ios": "^1.0.0-beta.13", "@vue/component-compiler-utils": "^2.3.1", "cli-color": "^1.4.0", + "commander": "^2.19.0", "eslint": "^5.11.1", "eslint-config-airbnb-base": "^13.1.0", "eslint-plugin-import": "^2.14.0", From b9ed4d6ca9f571454fdbf90c441ba8a0fbc8354b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 1 Jan 2019 23:04:07 +0100 Subject: [PATCH 017/243] updated year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index b442934b..15bc72f8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 +Copyright (c) 2019 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 9a26ebec74bae507610f15e737e00e1ba6694d77 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 1 Jan 2019 23:06:11 +0100 Subject: [PATCH 018/243] style fix --- cli/app-build.js | 4 ++-- cli/app-dev.js | 4 ++-- cli/app-test.js | 4 ++-- cli/app.js | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cli/app-build.js b/cli/app-build.js index d578838f..4026bf23 100644 --- a/cli/app-build.js +++ b/cli/app-build.js @@ -1,9 +1,9 @@ #!/usr/bin/env node const program = require('commander'); -const run = require('../scripts/helper/run') +const run = require('../scripts/helper/run'); program .parse(process.argv); -run.script('build') +run.script('build'); diff --git a/cli/app-dev.js b/cli/app-dev.js index a3ae1ace..1c433fbd 100644 --- a/cli/app-dev.js +++ b/cli/app-dev.js @@ -1,9 +1,9 @@ #!/usr/bin/env node const program = require('commander'); -const run = require('../scripts/helper/run') +const run = require('../scripts/helper/run'); program .parse(process.argv); -run.script('dev') +run.script('dev'); diff --git a/cli/app-test.js b/cli/app-test.js index f66fb29a..0544366b 100644 --- a/cli/app-test.js +++ b/cli/app-test.js @@ -1,9 +1,9 @@ #!/usr/bin/env node const program = require('commander'); -const run = require('../scripts/helper/run') +const run = require('../scripts/helper/run'); program .parse(process.argv); -run.script('test') +run.script('test'); diff --git a/cli/app.js b/cli/app.js index fd684463..3d312dea 100755 --- a/cli/app.js +++ b/cli/app.js @@ -1,7 +1,7 @@ #!/usr/bin/env node const program = require('commander'); -const { version } = require('../package.json') +const { version } = require('../package.json'); program .version(version, '-v --version') From 7c704e8ae893e6e051d34549ece0ffe5c3f61014 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:09:34 +0100 Subject: [PATCH 019/243] closes #814 --- package.json | 3 +++ scripts/postinstall.js | 3 ++- scripts/test-jest.js | 26 ++++++++++++++++++++++++++ scripts/update-gitignore.js | 1 + scripts/update-jest-config.js | 19 +++++++++++++++++++ templates/app/config.json | 12 +++++++++++- 6 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 scripts/test-jest.js create mode 100644 scripts/update-jest-config.js diff --git a/package.json b/package.json index fd8c284a..afd16b06 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,13 @@ "eslint": "^5.11.1", "eslint-config-airbnb-base": "^13.1.0", "eslint-plugin-import": "^2.14.0", + "eslint-plugin-jest": "^22.1.2", "eslint-plugin-vue": "^5.0.0", "framework7": "^3.6.3", "framework7-vue": "^3.6.3", "fs-extra": "^7.0.1", + "jest": "^23.6.0", + "jest-html-reporter": "^2.4.2", "jimp": "^0.6.0", "opn": "^5.4.0", "parcel-bundler": "^1.11.0", diff --git a/scripts/postinstall.js b/scripts/postinstall.js index a9bfcaea..b2d33ad1 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -3,6 +3,7 @@ const path = require('./helper/path'); shell.exec('node update-gitignore', { cwd: path.scripts() }); shell.exec('node update-eslintrc', { cwd: path.scripts() }); -shell.exec('node update-package-file', { cwd: path.scripts() }); +shell.exec('node update-package-config', { cwd: path.scripts() }); +shell.exec('node update-jest-config', { cwd: path.scripts() }); shell.exec('node update-license-date', { cwd: path.scripts() }); shell.exec('node create-app-folder', { cwd: path.scripts() }); diff --git a/scripts/test-jest.js b/scripts/test-jest.js new file mode 100644 index 00000000..d90ec113 --- /dev/null +++ b/scripts/test-jest.js @@ -0,0 +1,26 @@ +const path = require('path'); +const opn = require('opn'); +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const run = require('./helper/run'); + +const logFileName = 'Jest.log.html'; +const logFile = path.project(logFileName); +const jestConfigFile = path.project('.jestconfig.json'); +const appConfigFile = path.app('config.json'); + +const appConfig = fs.readJsonSync(appConfigFile); + +run.silent(`npx jest --config "${jestConfigFile}"`, (error) => { + if (error) { + opn(logFile, { wait: false }); + log.error(`Failed Jest tests. Please open ${logFileName} for details.`); + } else { + log.success('Passed Jest tests.'); + if (appConfig.test.jest.keepReportWhenPassed) { + opn(logFile, { wait: false }); + } else { + fs.remove(logFile); + } + } +}); diff --git a/scripts/update-gitignore.js b/scripts/update-gitignore.js index ac70d8f5..62f2aa87 100644 --- a/scripts/update-gitignore.js +++ b/scripts/update-gitignore.js @@ -18,6 +18,7 @@ const toBeIgnored = [ '*.tgz', '.eslintrc.json', '.gitignore', + '.jestconfig.json', ]; fs.writeFileSync(file, toBeIgnored.join('\n')); diff --git a/scripts/update-jest-config.js b/scripts/update-jest-config.js new file mode 100644 index 00000000..ecc22aff --- /dev/null +++ b/scripts/update-jest-config.js @@ -0,0 +1,19 @@ +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +const file = path.project('.jestconfig.json'); +const config = { + testMatch: ['**/*.spec.js'], + reporters: [ + 'default', + ['./node_modules/jest-html-reporter', { + pageTitle: 'Jest Report', + outputPath: path.project('Jest.log.html'), + includeFailureMsg: true, + }], + ], +}; + +fs.writeJsonSync(file, config, { spaces: 2 }); +log.success('Updated the Jest config file.'); diff --git a/templates/app/config.json b/templates/app/config.json index 3ac2ee91..471b7caf 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -16,7 +16,17 @@ } }, "backend": { - + }, + "test": { + "eslint": { + "runTest": true, + "keepReportWhenPassed": false, + "ownConfig": {} + }, + "jest": { + "runTest": true, + "keepReportWhenPassed": false + } }, "development": { "logLevel": "debug" From d79f76923c092882f7282ce1a65248cec4c72e5b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:10:15 +0100 Subject: [PATCH 020/243] add tests to CLI --- cli/app-test.js | 6 +++++- cli/app.js | 1 + scripts/test.js | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 scripts/test.js diff --git a/cli/app-test.js b/cli/app-test.js index 0544366b..3ac72e64 100644 --- a/cli/app-test.js +++ b/cli/app-test.js @@ -4,6 +4,10 @@ const program = require('commander'); const run = require('../scripts/helper/run'); program + .option('--eslint', 'run ESLint test only') + .option('--jest', 'run Jest tests only') .parse(process.argv); -run.script('test'); +if (program.eslint) run.script('test-eslint'); +else if (program.jest) run.script('test-jest'); +else run.script('test'); diff --git a/cli/app.js b/cli/app.js index 3d312dea..08620d4e 100755 --- a/cli/app.js +++ b/cli/app.js @@ -5,6 +5,7 @@ const { version } = require('../package.json'); program .version(version, '-v --version') + .command('test', 'run one or more tests') .command('dev', 'start development server') .command('build', 'build application') .parse(process.argv); diff --git a/scripts/test.js b/scripts/test.js new file mode 100644 index 00000000..731fdae8 --- /dev/null +++ b/scripts/test.js @@ -0,0 +1,16 @@ +const fs = require('fs-extra'); +const run = require('./helper/run'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +const config = fs.readJsonSync(path.app('config.json')); + +const tests = []; +if (config.test.eslint.runTest) tests.push('node scripts/test-eslint.js'); +if (config.test.jest.runTest) tests.push('node scripts/test-jest.js'); + +run.loud(tests.join(' && '), (err) => { + if (!err) { + log.success('Passed all tests.'); + } +}); From 013eb4a418f1631b50222fdae73f72bfb337dd8c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:10:32 +0100 Subject: [PATCH 021/243] update run script --- scripts/helper/run.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 scripts/helper/run.js diff --git a/scripts/helper/run.js b/scripts/helper/run.js new file mode 100644 index 00000000..3e5d9fad --- /dev/null +++ b/scripts/helper/run.js @@ -0,0 +1,15 @@ + +const { exec } = require('shelljs'); +const path = require('./path'); + +module.exports = { + silent(command, callback) { + exec(command, { cwd: path.framework(), silent: true }, callback); + }, + loud(command, callback) { + exec(command, { cwd: path.framework() }, callback); + }, + script(scriptName, callback) { + exec(`node scripts/${scriptName}.js`, { cwd: path.framework() }, callback); + }, +}; From bc63b4d3255f776920a88085584db507fd876750 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:10:51 +0100 Subject: [PATCH 022/243] update lock file --- package-lock.json | 2428 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 2323 insertions(+), 105 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d85ab11..7a191c16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.2", + "version": "3.0.0-alpha.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1518,6 +1518,11 @@ "vue-template-es2015-compiler": "^1.6.0" } }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1528,11 +1533,25 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==" }, + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, "acorn-jsx": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==" }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, "agent-base": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", @@ -1597,6 +1616,14 @@ "normalize-path": "^2.0.0" } }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "^1.0.0" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1623,11 +1650,29 @@ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -1661,6 +1706,11 @@ } } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -1676,6 +1726,14 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", @@ -1776,6 +1834,109 @@ } } }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "babel-extract-comments": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", @@ -1784,6 +1945,80 @@ "babylon": "^6.18.0" } }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + } + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", + "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=" + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -1798,6 +2033,39 @@ "babel-runtime": "^6.26.0" } }, + "babel-preset-jest": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", + "requires": { + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + } + } + } + }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -1814,6 +2082,54 @@ } } }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", @@ -1917,6 +2233,14 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "binary-extensions": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", @@ -1993,6 +2317,26 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, "browserify-aes": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -2068,6 +2412,14 @@ "node-releases": "^1.1.1" } }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", @@ -2189,6 +2541,19 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000925.tgz", "integrity": "sha512-zcYupoUxtW46rOikuDF7vfL9N1Qe9ZuUBTz3n3q8fFsoJIs/h9UN6Vg/0QpjsmvImXw9mVc3g+ZBfqvUz/iALA==" }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "requires": { + "rsvp": "^3.3.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -2225,6 +2590,11 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2876,6 +3246,19 @@ } } }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==" + }, + "cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "requires": { + "cssom": "0.3.x" + } + }, "d": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -2884,16 +3267,51 @@ "es5-ext": "^0.10.9" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "data-uri-to-buffer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, + "dateformat": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz", + "integrity": "sha1-mk30v/FYrC80vGN6vbFUcWB+Flk=" + }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -2931,6 +3349,24 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "requires": { + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -3047,6 +3483,24 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, "diffie-hellman": { "version": "5.0.3", "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -3104,6 +3558,14 @@ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", @@ -3147,6 +3609,15 @@ "readable-stream": "^2.0.2" } }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ecstatic": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-2.2.1.tgz", @@ -3490,6 +3961,11 @@ } } }, + "eslint-plugin-jest": { + "version": "22.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.1.2.tgz", + "integrity": "sha512-jSPT4rVmNetkeCIyrvvOM0wJtgoUSbKHIUDoOGzIISsg51eWN/nISPNKVM+jXMMDI9oowbyapOnpKSXlsLiDpQ==" + }, "eslint-plugin-vue": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.0.0.tgz", @@ -3591,6 +4067,14 @@ "safe-buffer": "^5.1.1" } }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "requires": { + "merge": "^1.2.0" + } + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -3610,6 +4094,11 @@ "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -3626,6 +4115,19 @@ "fill-range": "^2.1.0" } }, + "expect": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", + "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.6.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3668,6 +4170,11 @@ "is-extglob": "^1.0.0" } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "falafel": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", @@ -4022,6 +4529,14 @@ "websocket-driver": ">=0.5.1" } }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "requires": { + "bser": "^2.0.0" + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -4054,7 +4569,16 @@ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, - "filesize": { + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" @@ -4122,6 +4646,11 @@ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -4749,6 +5278,14 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -4812,6 +5349,43 @@ "unicode-trie": "^0.3.1" } }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "handlebars": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4940,6 +5514,15 @@ "resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -4960,6 +5543,14 @@ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, "htmlnano": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.1.10.tgz", @@ -5420,6 +6011,16 @@ } } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -5486,6 +6087,33 @@ } } }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5622,6 +6250,14 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, "is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", @@ -5693,6 +6329,14 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, "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", @@ -5703,6 +6347,11 @@ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" + }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", @@ -5798,11 +6447,21 @@ "has-symbols": "^1.0.0" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -5839,138 +6498,917 @@ "isarray": "1.0.0" } }, - "jimp": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.0.tgz", - "integrity": "sha512-RYpN+AAlTEMf8Bnkhq2eeTNyr70rDK/2UUfUqzBJmwmZwdR6fxRJvgbCGWT1BDVRxaAqo+4CWm8ePBxOIsr4jg==", - "requires": { - "@babel/polyfill": "^7.0.0", - "@jimp/custom": "^0.6.0", - "@jimp/plugins": "^0.6.0", - "@jimp/types": "^0.6.0", - "core-js": "^2.5.7" + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" } }, - "joi": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", - "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==" + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", "requires": { - "hoek": "4.x.x", - "isemail": "3.x.x", - "topo": "2.x.x" + "append-transform": "^0.4.0" } }, - "jpeg-js": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", - "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==" - }, - "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" - }, - "js-beautify": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.9.tgz", - "integrity": "sha512-MwPmLywK9RSX0SPsUJjN7i+RQY9w/yC17Lbrq9ViEefpLRgqAR2BgrMN2AbifkUuhDV8tRauLhLda/9+bE0YQA==", + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.2", - "glob": "^7.1.3", - "mkdirp": "~0.5.0", - "nopt": "~4.0.1" + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" } }, - "js-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", - "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "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==" - }, - "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==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "json5": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", "requires": { - "minimist": "^1.2.0" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } } } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", "requires": { - "graceful-fs": "^4.1.6" + "handlebars": "^4.0.3" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", + "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", "requires": { - "is-buffer": "^1.1.5" + "import-local": "^1.0.0", + "jest-cli": "^23.6.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "jest-cli": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", + "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.6.0", + "jest-environment-jsdom": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.6.0", + "jest-runner": "^23.6.0", + "jest-runtime": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "prompts": "^0.1.9", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^11.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "11.1.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "requires": { + "camelcase": "^4.1.0" + } + } } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "jest-changed-files": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", "requires": { - "invert-kv": "^2.0.0" + "throat": "^4.0.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "jest-config": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", + "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "babel-core": "^6.0.0", + "babel-jest": "^23.6.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.6.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.6.0" } }, - "livereload-js": { + "jest-diff": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", + "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", + "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.6.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" + }, + "jest-haste-map": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", + "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + } + }, + "jest-html-reporter": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jest-html-reporter/-/jest-html-reporter-2.4.2.tgz", + "integrity": "sha512-pQ3FQIauOEu8pi6TIJkizXgk7aTOsAfp9bCu7CWgtBThGqI1/w0VLQiOc/DBra2fIaym6tEoqug0gT3DpbVkLA==", + "requires": { + "dateformat": "3.0.2", + "mkdirp": "0.5.1", + "strip-ansi": "3.0.1", + "xmlbuilder": "8.2.2" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" + } + } + }, + "jest-jasmine2": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", + "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", + "requires": { + "babel-traverse": "^6.0.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.6.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.6.0", + "jest-each": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.6.0" + } + }, + "jest-leak-detector": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", + "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", + "requires": { + "pretty-format": "^23.6.0" + } + }, + "jest-matcher-utils": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", + "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=" + }, + "jest-regex-util": { + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=" + }, + "jest-resolve": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", + "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", + "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", + "requires": { + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.6.0" + } + }, + "jest-runner": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", + "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "requires": { + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.6.0", + "jest-jasmine2": "^23.6.0", + "jest-leak-detector": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.6.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", + "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "11.1.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "jest-serializer": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=" + }, + "jest-snapshot": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", + "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", + "requires": { + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.6.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.6.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "jest-validate": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", + "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-watcher": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "requires": { + "merge-stream": "^1.0.1" + } + }, + "jimp": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.0.tgz", + "integrity": "sha512-RYpN+AAlTEMf8Bnkhq2eeTNyr70rDK/2UUfUqzBJmwmZwdR6fxRJvgbCGWT1BDVRxaAqo+4CWm8ePBxOIsr4jg==", + "requires": { + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.6.0", + "@jimp/plugins": "^0.6.0", + "@jimp/types": "^0.6.0", + "core-js": "^2.5.7" + } + }, + "joi": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", + "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", + "requires": { + "hoek": "4.x.x", + "isemail": "3.x.x", + "topo": "2.x.x" + } + }, + "jpeg-js": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", + "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==" + }, + "js-base64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", + "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" + }, + "js-beautify": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.9.tgz", + "integrity": "sha512-MwPmLywK9RSX0SPsUJjN7i+RQY9w/yC17Lbrq9ViEefpLRgqAR2BgrMN2AbifkUuhDV8tRauLhLda/9+bE0YQA==", + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.2", + "glob": "^7.1.3", + "mkdirp": "~0.5.0", + "nopt": "~4.0.1" + } + }, + "js-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", + "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "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==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "kleur": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", + "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==" @@ -6042,6 +7480,11 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, "lodash.template": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", @@ -6105,6 +7548,14 @@ "vlq": "^0.2.2" } }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -6176,6 +7627,11 @@ "timers-ext": "^0.1.5" } }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" + }, "merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -6191,6 +7647,14 @@ } } }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "^2.0.1" + } + }, "merge2": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", @@ -6416,6 +7880,11 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, "node-libs-browser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", @@ -6468,6 +7937,17 @@ } } }, + "node-notifier": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", + "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==", + "requires": { + "growly": "^1.3.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, "node-releases": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz", @@ -6540,6 +8020,16 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, + "nwsapi": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6693,6 +8183,22 @@ "is-wsl": "^1.1.0" } }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -7275,6 +8781,11 @@ "error-ex": "^1.2.0" } }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -7348,6 +8859,11 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "phin": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", @@ -7407,6 +8923,11 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, "pngjs": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", @@ -8595,6 +10116,22 @@ "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + } + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -8615,6 +10152,15 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -8655,6 +10201,11 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -9104,6 +10655,14 @@ } } }, + "realpath-native": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", + "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", + "requires": { + "util.promisify": "^1.0.0" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -9240,6 +10799,14 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, "replace-in-file": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.2.tgz", @@ -9250,6 +10817,72 @@ "yargs": "^12.0.1" } }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "^4.13.1" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -9277,6 +10910,21 @@ "path-parse": "^1.0.6" } }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -9328,6 +10976,11 @@ "inherits": "^2.0.1" } }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -9375,6 +11028,299 @@ "clones": "^1.1.0" } }, + "sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "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==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -9523,6 +11469,11 @@ "rechoir": "^0.6.2" } }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -9548,6 +11499,16 @@ } } }, + "sisteransi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, "slice-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", @@ -9778,6 +11739,22 @@ "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "sshpk": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", + "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "ssr-window": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz", @@ -9788,6 +11765,11 @@ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" + }, "static-eval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz", @@ -9881,6 +11863,11 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "stream-browserify": { "version": "2.0.1", "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -9907,6 +11894,15 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + } + }, "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -10080,6 +12076,11 @@ "util.promisify": "~1.0.0" } }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, "table": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", @@ -10139,11 +12140,79 @@ } } }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + }, + "dependencies": { + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -10231,6 +12300,11 @@ "os-tmpdir": "~1.0.2" } }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -10287,6 +12361,23 @@ "hoek": "4.x.x" } }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -10307,6 +12398,19 @@ "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -10320,6 +12424,30 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -10532,6 +12660,11 @@ "object.getownpropertydescriptors": "^2.0.3" } }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, "v8-compile-cache": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", @@ -10551,6 +12684,16 @@ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", @@ -10613,6 +12756,38 @@ "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==" }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -10621,6 +12796,11 @@ "defaults": "^1.0.3" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -10635,6 +12815,29 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "whet.extend": { "version": "0.9.9", "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", @@ -10850,6 +13053,16 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "ws": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", @@ -10869,6 +13082,11 @@ "xtend": "^4.0.0" } }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, "xml-parse-from-string": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", From 42bac2e79b155e10f6b0ce5283eaf4499610acba Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:11:01 +0100 Subject: [PATCH 023/243] update eslint test script --- scripts/test-eslint.js | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index e1d6ba33..d263c723 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -1,18 +1,26 @@ -const shell = require('shelljs'); -const fs = require('fs-extra'); +const path = require('path'); const opn = require('opn'); -const path = require('./helper/path'); +const fs = require('fs-extra'); const log = require('./helper/logger'); +const run = require('./helper/run'); -const fileName = 'ESLint.log.html'; -const logFile = path.project(fileName); +const logFileName = 'ESLint.log.html'; +const logFile = path.project(logFileName); const cacheFile = path.cache('eslint/.eslintcache'); +const appConfigFile = path.app('config.json'); + +const appConfig = fs.readJsonSync(appConfigFile); -const testResult = shell.exec(`npx eslint . --ext .js --ext .vue --fix --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`); -if (testResult.code === 0) { - log.success('Passed ESLint test.'); - fs.removeSync(logFile); -} else { - opn(logFile); - log.error(`Failed ESLint test. Please check the ${fileName} file.`); -} +run.silent(`npx eslint . --ext .js --ext .vue --fix --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, (error) => { + if (error) { + opn(logFile, { wait: false }); + log.error(`Failed ESLint test. Please open ${logFileName} for details.`); + } else { + if (appConfig.test.eslint.keepReportWhenPassed) { + opn(logFile, { wait: false }); + } else { + fs.remove(logFile); + } + log.success('Passed ESLint test.'); + } +}); From 8a3b6683f4ce8b049e6260895d44e93c74e4cc9c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:11:15 +0100 Subject: [PATCH 024/243] update package config update script --- ...-package-file.js => update-package-config.js} | 16 ---------------- 1 file changed, 16 deletions(-) rename scripts/{update-package-file.js => update-package-config.js} (58%) diff --git a/scripts/update-package-file.js b/scripts/update-package-config.js similarity index 58% rename from scripts/update-package-file.js rename to scripts/update-package-config.js index a61c0de1..186d9573 100644 --- a/scripts/update-package-file.js +++ b/scripts/update-package-config.js @@ -2,8 +2,6 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -const isInstalled = path.project() !== path.framework(); - // Read file content const file = path.project('package.json'); const content = fs.readJsonSync(file); @@ -14,20 +12,6 @@ if (content.name === undefined) content.name = path.basename(path.project()); // Add missing version if (content.version === undefined) content.version = '1.0.0'; -// Update scripts -const prefix = `node ./${isInstalled ? 'node_modules/app-framework/' : ''}scripts/`; -const scriptArr = [ - 'postinstall', - 'test-eslint', - 'dev', - 'build', -]; -const scriptObj = {}; -scriptArr.forEach((script) => { - scriptObj[script] = prefix + script; -}); -content.scripts = scriptObj; - // Write updated content fs.writeJsonSync(file, content, { spaces: 2 }); log.success('Updated the package file.'); From e82033516ed06bd08a7545fb68b82cbef0b6291f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:11:26 +0100 Subject: [PATCH 025/243] update logger helper --- scripts/helper/logger.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index ad5a83e4..560a1c77 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -2,7 +2,7 @@ const clc = require('cli-color'); const fs = require('fs-extra'); const path = require('./path'); -const configFile = path.app('config.json') +const configFile = path.app('config.json'); const level = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).development.logLevel : 'debug'; module.exports = { @@ -24,7 +24,7 @@ module.exports = { }, error(msg) { console.log(clc.bold.red('[ERROR]'), clc.bold(msg)); // eslint-disable-line no-console - process.exit(0); + process.exit(1); }, reset() { process.stdout.write(clc.reset); From 49e90790467078d3a1c30941de83a63693ae8359 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:11:43 +0100 Subject: [PATCH 026/243] use run helper --- scripts/dev.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/dev.js b/scripts/dev.js index 54218bf6..b8a2c101 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -1,7 +1,7 @@ -const shell = require('shelljs'); const fs = require('fs-extra'); const path = require('./helper/path'); const log = require('./helper/logger'); +const run = require('./helper/run'); // Define cache folder for development build const cacheFolder = path.cache('buid-dev'); @@ -33,5 +33,5 @@ log.success('Prepared main script file.'); // Build files const parcelCacheFolder = path.cache('parcel'); -log.warning('Building development files - this may take a while ...'); -shell.exec(`npx parcel "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --open`); +log.info('Building development files - this may take a while ...'); +run.loud(`npx parcel "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --open`); From 3a75c736d4729acd99af25fb04507892b54f2ecd Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:13:44 +0100 Subject: [PATCH 027/243] update hint --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 66549850..0ab151b9 100644 --- a/README.md +++ b/README.md @@ -19,4 +19,5 @@ You are invited to open any V3 related [question, bug or feature request](https: ## Update -To update App Framework to latest development version, run `npm run update`. +Updating does not work properly as necessary scripts are not completed. +To test the newest development version, you should create a new app. From 435be9a186e5f62d6295cfa658792fd71fcac1e5 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:20:13 +0100 Subject: [PATCH 028/243] make eslint config configurable --- scripts/helper/merge.js | 20 ++++++++++++++++++++ scripts/helper/merge.spec.js | 19 +++++++++++++++++++ scripts/postinstall.js | 2 +- scripts/update-eslint-config.js | 20 ++++++++++++++++++++ scripts/update-eslintrc.js | 13 ------------- 5 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 scripts/helper/merge.js create mode 100644 scripts/helper/merge.spec.js create mode 100644 scripts/update-eslint-config.js delete mode 100644 scripts/update-eslintrc.js diff --git a/scripts/helper/merge.js b/scripts/helper/merge.js new file mode 100644 index 00000000..a19ea8dc --- /dev/null +++ b/scripts/helper/merge.js @@ -0,0 +1,20 @@ +const mergeRecursive = (leftObject, rightObj) => { + const obj1 = leftObject; + const obj2 = rightObj; + Object.keys(obj2).forEach((p) => { + try { + if (obj2[p].constructor === Object) { + obj1[p] = mergeRecursive(obj1[p], obj2[p]); + } else if (Array.isArray(obj1[p]) && Array.isArray(obj2[p])) { + obj1[p] = obj1[p].concat(obj2[p]); + } else { + obj1[p] = obj2[p]; + } + } catch (e) { + obj1[p] = obj2[p]; + } + }); + return obj1; +}; + +module.exports = mergeRecursive; diff --git a/scripts/helper/merge.spec.js b/scripts/helper/merge.spec.js new file mode 100644 index 00000000..2e55626e --- /dev/null +++ b/scripts/helper/merge.spec.js @@ -0,0 +1,19 @@ +const merge = require('./merge'); + +describe('scripts/helper/merge.js', () => { + test('should merge two objects', () => { + expect(merge({ a: 1, b: 2 }, { c: 3, d: 4 })).toEqual({ + a: 1, b: 2, c: 3, d: 4, + }); + }); + test('should overwrite left with right value', () => { + expect(merge({ a: 1, b: 2 }, { b: 3, c: 4 })).toEqual({ a: 1, b: 3, c: 4 }); + }); + test('should concat arrays', () => { + expect(merge({ a: [1, 2] }, { a: [3, 4] })).toEqual({ a: [1, 2, 3, 4] }); + }); + test('should work recursively', () => { + expect(merge({ a: { a1: 1, a2: 2 }, b: { b1: 1, b2: 2 } }, { b: { b3: 3 }, c: { c1: 1 } })) + .toEqual({ a: { a1: 1, a2: 2 }, b: { b1: 1, b2: 2, b3: 3 }, c: { c1: 1 } }); + }); +}); diff --git a/scripts/postinstall.js b/scripts/postinstall.js index b2d33ad1..7c3c6edd 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -2,7 +2,7 @@ const shell = require('shelljs'); const path = require('./helper/path'); shell.exec('node update-gitignore', { cwd: path.scripts() }); -shell.exec('node update-eslintrc', { cwd: path.scripts() }); +shell.exec('node update-eslint-config', { cwd: path.scripts() }); shell.exec('node update-package-config', { cwd: path.scripts() }); shell.exec('node update-jest-config', { cwd: path.scripts() }); shell.exec('node update-license-date', { cwd: path.scripts() }); diff --git a/scripts/update-eslint-config.js b/scripts/update-eslint-config.js new file mode 100644 index 00000000..ec713dbf --- /dev/null +++ b/scripts/update-eslint-config.js @@ -0,0 +1,20 @@ +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); +const merge = require('./helper/merge') + +const defaultConfig = { + extends: [ + 'airbnb-base', + 'plugin:vue/base', + 'plugin:jest/recommended', + ], +} + +const userConfig = fs.readJsonSync(path.app('config.json')).test.eslint.ownConfig + +const mergedConfig = merge(defaultConfig, userConfig) + +const file = path.project('.eslintrc.json'); +fs.writeJsonSync(file, mergedConfig, { spaces: 2 }); +log.success('Updated the ESLint config file.'); diff --git a/scripts/update-eslintrc.js b/scripts/update-eslintrc.js deleted file mode 100644 index 0dc06cc5..00000000 --- a/scripts/update-eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -const fs = require('fs-extra'); -const log = require('./helper/logger'); -const path = require('./helper/path'); - -const file = path.project('.eslintrc.json'); -const config = { - extends: [ - 'airbnb-base', - 'plugin:vue/base', - ], -}; -fs.writeJsonSync(file, config, { spaces: 2 }); -log.success('Updated the ESLint config file.'); From c2b50a5a341823ae27f812cc93f4d4f347b04a46 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:21:07 +0100 Subject: [PATCH 029/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afd16b06..f42db81a 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.3", + "version": "3.0.0-alpha.4", "license": "MIT", "bin": { "app": "./cli/app.js" From 09007235e0865fdcad6db3e13bfb182c87b344ad Mon Sep 17 00:00:00 2001 From: scriptPilot Date: Wed, 2 Jan 2019 00:24:47 +0100 Subject: [PATCH 030/243] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0ab151b9..ee74f4b9 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ You are invited to open any V3 related [question, bug or feature request](https: ## CLI Commands +- `npx app test` to run all configured tests - `npx app dev` to open application on development server - `npx app build` to build application to */build* folder From 2f7be9a3fbe52dad335ea7558262c2605d610d27 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:31:33 +0100 Subject: [PATCH 031/243] style fix --- scripts/update-eslint-config.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/update-eslint-config.js b/scripts/update-eslint-config.js index ec713dbf..bea7b5f8 100644 --- a/scripts/update-eslint-config.js +++ b/scripts/update-eslint-config.js @@ -1,7 +1,7 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -const merge = require('./helper/merge') +const merge = require('./helper/merge'); const defaultConfig = { extends: [ @@ -9,11 +9,11 @@ const defaultConfig = { 'plugin:vue/base', 'plugin:jest/recommended', ], -} +}; -const userConfig = fs.readJsonSync(path.app('config.json')).test.eslint.ownConfig +const userConfig = fs.readJsonSync(path.app('config.json')).test.eslint.ownConfig; -const mergedConfig = merge(defaultConfig, userConfig) +const mergedConfig = merge(defaultConfig, userConfig); const file = path.project('.eslintrc.json'); fs.writeJsonSync(file, mergedConfig, { spaces: 2 }); From c94a0968b42fdacfd6bd96079d1f411c6ec202d6 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:31:48 +0100 Subject: [PATCH 032/243] exclude node_modules folder --- scripts/update-jest-config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-jest-config.js b/scripts/update-jest-config.js index ecc22aff..0ac054b1 100644 --- a/scripts/update-jest-config.js +++ b/scripts/update-jest-config.js @@ -4,7 +4,7 @@ const path = require('./helper/path'); const file = path.project('.jestconfig.json'); const config = { - testMatch: ['**/*.spec.js'], + testMatch: ['**/*.spec.js', '!**/node_modules/**'], reporters: [ 'default', ['./node_modules/jest-html-reporter', { From 22dac019ad29bd0296b9143bbbe503ab021cb07b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 00:31:57 +0100 Subject: [PATCH 033/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f42db81a..f954b481 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.4", + "version": "3.0.0-alpha.5", "license": "MIT", "bin": { "app": "./cli/app.js" From 7236d10cdf4a35e2943eca1d24399e2802ca7b5e Mon Sep 17 00:00:00 2001 From: scriptPilot Date: Wed, 2 Jan 2019 00:32:53 +0100 Subject: [PATCH 034/243] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ee74f4b9..a6ab7715 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ You are invited to open any V3 related [question, bug or feature request](https: 2. Run `cd ` to open the newly created folder 3. Run `echo {} > package.json` to create an empty package file 4. Run `npm install --save app-framework@latest` to install latest development release -5. Run `npm run dev` to open application on development server +5. Run `npx app dev` to open application on development server ## CLI Commands From 0d647de50ee434a84616ce4437be7475bd43ffb0 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 01:40:16 +0100 Subject: [PATCH 035/243] fixed paths --- scripts/test-jest.js | 9 ++++++--- scripts/update-jest-config.js | 3 +-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/test-jest.js b/scripts/test-jest.js index d90ec113..b0ce6a90 100644 --- a/scripts/test-jest.js +++ b/scripts/test-jest.js @@ -1,8 +1,8 @@ const path = require('path'); const opn = require('opn'); const fs = require('fs-extra'); +const { exec } = require('shelljs'); const log = require('./helper/logger'); -const run = require('./helper/run'); const logFileName = 'Jest.log.html'; const logFile = path.project(logFileName); @@ -11,8 +11,11 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); -run.silent(`npx jest --config "${jestConfigFile}"`, (error) => { - if (error) { +exec(`npx jest --config "${jestConfigFile}"`, { cwd: path.project(), silent: true }, (error, stdout) => { + if (error && stdout.search(/No tests found/) !== -1) { + log.info('Skipped Jest tests, no specs found.') + fs.remove(logFile); + } else if (error) { opn(logFile, { wait: false }); log.error(`Failed Jest tests. Please open ${logFileName} for details.`); } else { diff --git a/scripts/update-jest-config.js b/scripts/update-jest-config.js index 0ac054b1..abdcebde 100644 --- a/scripts/update-jest-config.js +++ b/scripts/update-jest-config.js @@ -2,7 +2,6 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -const file = path.project('.jestconfig.json'); const config = { testMatch: ['**/*.spec.js', '!**/node_modules/**'], reporters: [ @@ -15,5 +14,5 @@ const config = { ], }; -fs.writeJsonSync(file, config, { spaces: 2 }); +fs.writeJsonSync(path.project('.jestconfig.json'), config, { spaces: 2 }); log.success('Updated the Jest config file.'); From 477816acd3ebc0253af85713e0a6e9bec28ce1de Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 01:40:25 +0100 Subject: [PATCH 036/243] fixed paths --- scripts/test-eslint.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index d263c723..d0c1caa2 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -1,8 +1,8 @@ const path = require('path'); const opn = require('opn'); const fs = require('fs-extra'); +const { exec } = require('shelljs'); const log = require('./helper/logger'); -const run = require('./helper/run'); const logFileName = 'ESLint.log.html'; const logFile = path.project(logFileName); @@ -10,8 +10,9 @@ const cacheFile = path.cache('eslint/.eslintcache'); const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); +const configFile = path.project('.eslintrc.json'); -run.silent(`npx eslint . --ext .js --ext .vue --fix --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, (error) => { +exec(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, { cwd: path.project(), silent: true }, (error) => { if (error) { opn(logFile, { wait: false }); log.error(`Failed ESLint test. Please open ${logFileName} for details.`); From 8046d70f2d0e027e243b8bdc1e2276ef4dd6ea17 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 01:40:31 +0100 Subject: [PATCH 037/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f954b481..534d4305 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.5", + "version": "3.0.0-alpha.14", "license": "MIT", "bin": { "app": "./cli/app.js" From 5b05d534b8bfe8ae6b60c50a6868f86f36450cc8 Mon Sep 17 00:00:00 2001 From: scriptPilot Date: Wed, 2 Jan 2019 01:41:50 +0100 Subject: [PATCH 038/243] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6ab7715..4f647c47 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # App Framework 3 -> App Framework 3 is under development. For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework). The status of the development can be seen in [this milestone](https://github.com/scriptPilot/app-framework/milestone/8). +App Framework 3 is under development. **For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework)**. The status of the development can be seen in [this milestone](https://github.com/scriptPilot/app-framework/milestone/8). You are invited to open any V3 related [question, bug or feature request](https://github.com/scriptPilot/app-framework/issues). From 92f3aeb1a9846fa68d521fd2bfc682ce1c8244f4 Mon Sep 17 00:00:00 2001 From: scriptPilot Date: Wed, 2 Jan 2019 01:41:59 +0100 Subject: [PATCH 039/243] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 4f647c47..4f992a9e 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # App Framework 3 -App Framework 3 is under development. **For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework)**. The status of the development can be seen in [this milestone](https://github.com/scriptPilot/app-framework/milestone/8). - -You are invited to open any V3 related [question, bug or feature request](https://github.com/scriptPilot/app-framework/issues). +App Framework 3 is under development. **For production usage please use [App Framework 1](https://github.com/scriptPilot/app-framework)**. The status of the development can be seen in [this milestone](https://github.com/scriptPilot/app-framework/milestone/8). You are invited to open any V3 related [question, bug or feature request](https://github.com/scriptPilot/app-framework/issues). ## Get Started From 3382ab0485c2f0b9b3dd2b99209e025b9e8a809c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 13:44:26 +0100 Subject: [PATCH 040/243] test if function is exported --- scripts/helper/merge.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/helper/merge.spec.js b/scripts/helper/merge.spec.js index 2e55626e..1faf1af4 100644 --- a/scripts/helper/merge.spec.js +++ b/scripts/helper/merge.spec.js @@ -1,6 +1,9 @@ const merge = require('./merge'); describe('scripts/helper/merge.js', () => { + test('should export a function', () => { + expect(typeof merge).toBe('function') + }) test('should merge two objects', () => { expect(merge({ a: 1, b: 2 }, { c: 3, d: 4 })).toEqual({ a: 1, b: 2, c: 3, d: 4, From 3bdc8c1aca117fa37c180bd1c14987fb659153ca Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 14:34:53 +0100 Subject: [PATCH 041/243] style fix --- scripts/helper/merge.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/helper/merge.spec.js b/scripts/helper/merge.spec.js index 1faf1af4..6773c3ac 100644 --- a/scripts/helper/merge.spec.js +++ b/scripts/helper/merge.spec.js @@ -2,8 +2,8 @@ const merge = require('./merge'); describe('scripts/helper/merge.js', () => { test('should export a function', () => { - expect(typeof merge).toBe('function') - }) + expect(typeof merge).toBe('function'); + }); test('should merge two objects', () => { expect(merge({ a: 1, b: 2 }, { c: 3, d: 4 })).toEqual({ a: 1, b: 2, c: 3, d: 4, From 5639f169dd9458422c3bffdc740d310c2b342895 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 14:35:24 +0100 Subject: [PATCH 042/243] changed config options --- templates/app/config.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/templates/app/config.json b/templates/app/config.json index 471b7caf..e7e12322 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -19,13 +19,15 @@ }, "test": { "eslint": { - "runTest": true, + "runOnTestCommand": true, + "runBeforeBuild": true, "keepReportWhenPassed": false, "ownConfig": {} }, "jest": { - "runTest": true, - "keepReportWhenPassed": false + "runOnTestCommand": true, + "runBeforeBuild": true, + "keepReportWhenPassed": true } }, "development": { From efcc0a02209d8eb05d4b9581c07b1050320e143f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 14:36:50 +0100 Subject: [PATCH 043/243] harmonized scripts --- scripts/build-pwa.js | 42 ++++++++++--------- scripts/build.js | 30 +++++++++---- scripts/helper/run.js | 7 ++-- scripts/postinstall.js | 31 ++++++++++---- scripts/test-eslint.js | 4 +- scripts/test-jest.js | 7 ++-- scripts/test.js | 9 ++-- ...itignore.js => update-gitignore-config.js} | 0 8 files changed, 79 insertions(+), 51 deletions(-) rename scripts/{update-gitignore.js => update-gitignore-config.js} (100%) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index 17473845..ed3ef7ab 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -1,6 +1,6 @@ -const shell = require('shelljs'); const fs = require('fs-extra'); const path = require('./helper/path'); +const run = require('./helper/run'); const log = require('./helper/logger'); // Empty cache folder @@ -56,23 +56,27 @@ log.success('Prepared main script file.'); const parcelCacheFolder = path.cache('parcel'); const buildFolder = path.build('pwa'); log.warning('Building PWA files - this may take a while ...'); -const build = shell.exec(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${buildFolder}" --no-source-maps`); -if (build.code === 0) { - log.success('Built PWA files.'); -} else { - log.error('Failed to build PWA files.'); -} +run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${buildFolder}" --no-source-maps`, (error) => { + // Build ok + if (!error) { + log.success('Built PWA files.'); -// Create robots.txt file -const robotsFile = path.build('pwa/robots.txt'); -const robotsFileContent = 'User-Agent: *\nDisallow:'; -fs.writeFileSync(robotsFile, robotsFileContent); -log.success('Created robots.txt file.'); + // Create robots.txt file + const robotsFile = path.build('pwa/robots.txt'); + const robotsFileContent = 'User-Agent: *\nDisallow:'; + fs.writeFileSync(robotsFile, robotsFileContent); + log.success('Created robots.txt file.'); -// Create .htaccess file -const htaccessFile = path.build('pwa/.htaccess'); -const htaccessFileContent = '\n' - + 'Header set Cache-Control "max-age=31536000, public"\n' - + ''; -fs.writeFileSync(htaccessFile, htaccessFileContent); -log.success('Created .htaccess file.'); + // Create .htaccess file + const htaccessFile = path.build('pwa/.htaccess'); + const htaccessFileContent = '\n' + + 'Header set Cache-Control "max-age=31536000, public"\n' + + ''; + fs.writeFileSync(htaccessFile, htaccessFileContent); + log.success('Created .htaccess file.'); + + // Build not ok + } else { + log.error('Failed to build PWA files.'); + } +}); diff --git a/scripts/build.js b/scripts/build.js index 1e9a5107..e1f3bd1e 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,15 +1,27 @@ -const shell = require('shelljs'); const fs = require('fs-extra'); +const run = require('./helper/run'); const path = require('./helper/path'); +const log = require('./helper/logger'); -// Run tests -shell.exec('node test-eslint', { cwd: path.scripts() }); +const config = fs.readJsonSync(path.app('config.json')); -// Build Icons -shell.exec('node build-icons', { cwd: path.scripts() }); +const scripts = []; -// Empty build folder -fs.emptyDirSync(path.build()); +if (config.test.eslint.runBeforeBuild) scripts.push('test-eslint'); +if (config.test.jest.runBeforeBuild) scripts.push('test-jest'); -// Build PWA -shell.exec('node build-pwa', { cwd: path.scripts() }); +scripts.push('build-icons'); +scripts.push('build-pwa'); + +const runNextScript = () => { + if (scripts.length > 0) { + run.script(scripts.shift(), (error) => { + if (!error) runNextScript(); + else log.error('Failed to complete build routine.'); + }); + } else { + log.success('Completed build routine.'); + } +}; + +runNextScript(); diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 3e5d9fad..12ea6f7d 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -1,15 +1,14 @@ - const { exec } = require('shelljs'); const path = require('./path'); module.exports = { silent(command, callback) { - exec(command, { cwd: path.framework(), silent: true }, callback); + exec(command, { cwd: path.project(), silent: true }, callback); }, loud(command, callback) { - exec(command, { cwd: path.framework() }, callback); + exec(command, { cwd: path.project(), silent: false }, callback); }, script(scriptName, callback) { - exec(`node scripts/${scriptName}.js`, { cwd: path.framework() }, callback); + exec(`node scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }, callback); }, }; diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 7c3c6edd..917ca7b9 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -1,9 +1,24 @@ -const shell = require('shelljs'); -const path = require('./helper/path'); +const run = require('./helper/run'); +const log = require('./helper/logger'); -shell.exec('node update-gitignore', { cwd: path.scripts() }); -shell.exec('node update-eslint-config', { cwd: path.scripts() }); -shell.exec('node update-package-config', { cwd: path.scripts() }); -shell.exec('node update-jest-config', { cwd: path.scripts() }); -shell.exec('node update-license-date', { cwd: path.scripts() }); -shell.exec('node create-app-folder', { cwd: path.scripts() }); +const scripts = [ + 'update-gitignore-config', + 'update-eslint-config', + 'update-package-config', + 'update-jest-config', + 'update-license-date', + 'create-app-folder', +]; + +const runNextScript = () => { + if (scripts.length > 0) { + run.script(scripts.shift(), (error) => { + if (!error) runNextScript(); + else log.error('Failed to complete postinstall routine.'); + }); + } else { + log.success('Completed postinstall routine.'); + } +}; + +runNextScript(); diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index d0c1caa2..fd874d79 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -1,7 +1,7 @@ const path = require('path'); const opn = require('opn'); const fs = require('fs-extra'); -const { exec } = require('shelljs'); +const run = require('./helper/run'); const log = require('./helper/logger'); const logFileName = 'ESLint.log.html'; @@ -12,7 +12,7 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -exec(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, { cwd: path.project(), silent: true }, (error) => { +run.silent(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, (error) => { if (error) { opn(logFile, { wait: false }); log.error(`Failed ESLint test. Please open ${logFileName} for details.`); diff --git a/scripts/test-jest.js b/scripts/test-jest.js index b0ce6a90..201a54b4 100644 --- a/scripts/test-jest.js +++ b/scripts/test-jest.js @@ -1,7 +1,7 @@ const path = require('path'); const opn = require('opn'); const fs = require('fs-extra'); -const { exec } = require('shelljs'); +const run = require('./helper/run'); const log = require('./helper/logger'); const logFileName = 'Jest.log.html'; @@ -10,10 +10,9 @@ const jestConfigFile = path.project('.jestconfig.json'); const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); - -exec(`npx jest --config "${jestConfigFile}"`, { cwd: path.project(), silent: true }, (error, stdout) => { +run.silent(`npx jest --config "${jestConfigFile}"`, (error, stdout) => { if (error && stdout.search(/No tests found/) !== -1) { - log.info('Skipped Jest tests, no specs found.') + log.info('Skipped Jest tests, no specs found.'); fs.remove(logFile); } else if (error) { opn(logFile, { wait: false }); diff --git a/scripts/test.js b/scripts/test.js index 731fdae8..dd6aabd4 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -6,11 +6,10 @@ const path = require('./helper/path'); const config = fs.readJsonSync(path.app('config.json')); const tests = []; -if (config.test.eslint.runTest) tests.push('node scripts/test-eslint.js'); -if (config.test.jest.runTest) tests.push('node scripts/test-jest.js'); +if (config.test.eslint.runOnTestCommand) test.push(`node "${path.scripts('test-eslint.js')}"`); +if (config.test.jest.runOnTestCommand) test.push(`node "${path.scripts('test-jest.js')}"`); run.loud(tests.join(' && '), (err) => { - if (!err) { - log.success('Passed all tests.'); - } + if (err) log.error('Failed one or more tests.'); + else log.success('Passed all tests.'); }); diff --git a/scripts/update-gitignore.js b/scripts/update-gitignore-config.js similarity index 100% rename from scripts/update-gitignore.js rename to scripts/update-gitignore-config.js From 132d75232eb809159706920992d558e2fd1dbd8d Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 14:36:56 +0100 Subject: [PATCH 044/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 534d4305..d6af6835 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.14", + "version": "3.0.0-alpha.15", "license": "MIT", "bin": { "app": "./cli/app.js" From ee67693cd40ffd48fcaa39617347c1faf93a8348 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:23:17 +0100 Subject: [PATCH 045/243] make path relative --- scripts/helper/run.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 12ea6f7d..08d6e35b 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -9,6 +9,6 @@ module.exports = { exec(command, { cwd: path.project(), silent: false }, callback); }, script(scriptName, callback) { - exec(`node scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }, callback); + exec(`node ./scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }, callback); }, }; From 99ae079777d81bd193976b3d2b28f5fe98992703 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:25:31 +0100 Subject: [PATCH 046/243] handle no configured tests --- scripts/test.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/test.js b/scripts/test.js index dd6aabd4..87f3b609 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -9,7 +9,11 @@ const tests = []; if (config.test.eslint.runOnTestCommand) test.push(`node "${path.scripts('test-eslint.js')}"`); if (config.test.jest.runOnTestCommand) test.push(`node "${path.scripts('test-jest.js')}"`); -run.loud(tests.join(' && '), (err) => { - if (err) log.error('Failed one or more tests.'); - else log.success('Passed all tests.'); -}); +if (tests.length > 0) { + run.loud(tests.join(' && '), (err) => { + if (err) log.error('Failed one or more tests.'); + else log.success('Passed all tests.'); + }); +} else { + log.info('No tests configured.') +} From ba4051db930c14f78b137c2067a6b4b8a532fd71 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:25:37 +0100 Subject: [PATCH 047/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d6af6835..d7b6a325 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "license": "MIT", "bin": { "app": "./cli/app.js" From 13eea48b826b13c7536769c474f4d8cd6ecdbbe1 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:36:01 +0100 Subject: [PATCH 048/243] style fix --- scripts/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.js b/scripts/test.js index 87f3b609..04b47e22 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -15,5 +15,5 @@ if (tests.length > 0) { else log.success('Passed all tests.'); }); } else { - log.info('No tests configured.') + log.info('No tests configured.'); } From 163309a033f764f9e47e10f37c9fa41de9169d20 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:36:12 +0100 Subject: [PATCH 049/243] exclude build folder from tests --- scripts/test-eslint.js | 2 +- scripts/update-jest-config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index fd874d79..b1479781 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,7 +12,7 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -run.silent(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, (error) => { +run.silent(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/build/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, (error) => { if (error) { opn(logFile, { wait: false }); log.error(`Failed ESLint test. Please open ${logFileName} for details.`); diff --git a/scripts/update-jest-config.js b/scripts/update-jest-config.js index abdcebde..5e4508be 100644 --- a/scripts/update-jest-config.js +++ b/scripts/update-jest-config.js @@ -3,7 +3,7 @@ const log = require('./helper/logger'); const path = require('./helper/path'); const config = { - testMatch: ['**/*.spec.js', '!**/node_modules/**'], + testMatch: ['**/*.spec.js', '!**/node_modules/**', '!**/build/**'], reporters: [ 'default', ['./node_modules/jest-html-reporter', { From bf268d6b826f449875766c3d019574dff9e0e9e9 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:36:21 +0100 Subject: [PATCH 050/243] version bump --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 7a191c16..15cc4e69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.3", + "version": "3.0.0-alpha.16", "lockfileVersion": 1, "requires": true, "dependencies": { From af643d66a429fcf1f897b4edce1e0bdc4decb35a Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:36:36 +0100 Subject: [PATCH 051/243] show test reports by default --- templates/app/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/app/config.json b/templates/app/config.json index e7e12322..26f2f2af 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -21,7 +21,7 @@ "eslint": { "runOnTestCommand": true, "runBeforeBuild": true, - "keepReportWhenPassed": false, + "keepReportWhenPassed": true, "ownConfig": {} }, "jest": { From 6abab8cd2d1b0193c62b3b043f1bc8502e155e9a Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 18:50:11 +0100 Subject: [PATCH 052/243] typo --- scripts/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/test.js b/scripts/test.js index 04b47e22..b9b8e92b 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -6,8 +6,8 @@ const path = require('./helper/path'); const config = fs.readJsonSync(path.app('config.json')); const tests = []; -if (config.test.eslint.runOnTestCommand) test.push(`node "${path.scripts('test-eslint.js')}"`); -if (config.test.jest.runOnTestCommand) test.push(`node "${path.scripts('test-jest.js')}"`); +if (config.test.eslint.runOnTestCommand) tests.push(`node "${path.scripts('test-eslint.js')}"`); +if (config.test.jest.runOnTestCommand) tests.push(`node "${path.scripts('test-jest.js')}"`); if (tests.length > 0) { run.loud(tests.join(' && '), (err) => { From cb73590459b326e9d9cb2df61db58cc39df282cd Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 19:21:52 +0100 Subject: [PATCH 053/243] PWA build and open in browser closes #822 --- scripts/build-pwa.js | 14 ++++++++++++++ scripts/helper/run.js | 1 + templates/app/config.json | 1 + 3 files changed, 16 insertions(+) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index ed3ef7ab..c92513f9 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -75,6 +75,20 @@ run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder fs.writeFileSync(htaccessFile, htaccessFileContent); log.success('Created .htaccess file.'); + // Update Capacitor configuration file + const capConfig = { + appId: config.meta.appID, + appName: config.meta.name, + bundledWebRuntime: false, + webDir: '../../build/pwa', + }; + fs.writeJsonSync(path.cache('capacitor/capacitor.config.json'), capConfig, { spaces: 2 }); + + // Open PWA + run.exec('npx cap serve', { cwd: path.cache('capacitor') }) + + log.success('Completed PWA build.'); + // Build not ok } else { log.error('Failed to build PWA files.'); diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 08d6e35b..cc6ef52e 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -11,4 +11,5 @@ module.exports = { script(scriptName, callback) { exec(`node ./scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }, callback); }, + exec(...args) { exec(...args); }, }; diff --git a/templates/app/config.json b/templates/app/config.json index 26f2f2af..e8306225 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -3,6 +3,7 @@ "name": "My App", "shortName": "My App", "description": "Description of your new application.", + "appID": "de.scriptpilot.appframework", "language": "en" }, "frontend": { From 93dc499ccbde48b87b3b6df7dc30e4aa1105eaf7 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 19:40:26 +0100 Subject: [PATCH 054/243] style fix --- scripts/build-pwa.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index c92513f9..524a4f1d 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -85,7 +85,7 @@ run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder fs.writeJsonSync(path.cache('capacitor/capacitor.config.json'), capConfig, { spaces: 2 }); // Open PWA - run.exec('npx cap serve', { cwd: path.cache('capacitor') }) + run.exec('npx cap serve', { cwd: path.cache('capacitor') }); log.success('Completed PWA build.'); From deb9179fb6674012f357d48c3421cb050933216c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 19:40:52 +0100 Subject: [PATCH 055/243] editor config support added closes #820 --- scripts/postinstall.js | 1 + scripts/update-editor-config.js | 20 ++++++++++++++++++++ scripts/update-gitignore-config.js | 1 + templates/app/config.json | 5 ++++- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 scripts/update-editor-config.js diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 917ca7b9..7dccc309 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -2,6 +2,7 @@ const run = require('./helper/run'); const log = require('./helper/logger'); const scripts = [ + 'update-editor-config', 'update-gitignore-config', 'update-eslint-config', 'update-package-config', diff --git a/scripts/update-editor-config.js b/scripts/update-editor-config.js new file mode 100644 index 00000000..705cbc1e --- /dev/null +++ b/scripts/update-editor-config.js @@ -0,0 +1,20 @@ +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +const defaultConfig = [ + '[*]', + 'charset = utf-8', + 'end_of_line = lf', + 'insert_final_newline = true', + 'indent_style = space', + 'indent_size = 2', +]; + +const userConfig = fs.readJsonSync(path.app('config.json')).development.editorConfig.ownConfig; + +const mergedConfig = defaultConfig.concat(userConfig); + +const file = path.project('.editorconfig'); +fs.writeFileSync(file, `${mergedConfig.join('\n')}\n`); +log.success('Updated the Editor config file.'); diff --git a/scripts/update-gitignore-config.js b/scripts/update-gitignore-config.js index 62f2aa87..ac95737e 100644 --- a/scripts/update-gitignore-config.js +++ b/scripts/update-gitignore-config.js @@ -16,6 +16,7 @@ const toBeIgnored = [ 'build', 'node_modules/', '*.tgz', + '.editorconfig', '.eslintrc.json', '.gitignore', '.jestconfig.json', diff --git a/templates/app/config.json b/templates/app/config.json index e8306225..344c9795 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -32,7 +32,10 @@ } }, "development": { - "logLevel": "debug" + "logLevel": "debug", + "editorConfig": { + "ownConfig": [] + } }, "production": { From 75a870cb844e4b89e69ebf4dbb797ca3223a0d57 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 20:05:21 +0100 Subject: [PATCH 056/243] reordered tasks --- scripts/build-pwa.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index 524a4f1d..4ee27883 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -52,6 +52,20 @@ mainFileContent = mainFileContent.replace('./app/app.vue', path.relative(path.ca fs.writeFileSync(cachedMainFile, mainFileContent); log.success('Prepared main script file.'); +// Create robots.txt file +const robotsFile = path.build('pwa/robots.txt'); +const robotsFileContent = 'User-Agent: *\nDisallow:'; +fs.writeFileSync(robotsFile, robotsFileContent); +log.success('Created robots.txt file.'); + +// Create .htaccess file +const htaccessFile = path.build('pwa/.htaccess'); +const htaccessFileContent = '\n' + + 'Header set Cache-Control "max-age=31536000, public"\n' + + ''; +fs.writeFileSync(htaccessFile, htaccessFileContent); +log.success('Created .htaccess file.'); + // Build files const parcelCacheFolder = path.cache('parcel'); const buildFolder = path.build('pwa'); @@ -61,20 +75,6 @@ run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder if (!error) { log.success('Built PWA files.'); - // Create robots.txt file - const robotsFile = path.build('pwa/robots.txt'); - const robotsFileContent = 'User-Agent: *\nDisallow:'; - fs.writeFileSync(robotsFile, robotsFileContent); - log.success('Created robots.txt file.'); - - // Create .htaccess file - const htaccessFile = path.build('pwa/.htaccess'); - const htaccessFileContent = '\n' - + 'Header set Cache-Control "max-age=31536000, public"\n' - + ''; - fs.writeFileSync(htaccessFile, htaccessFileContent); - log.success('Created .htaccess file.'); - // Update Capacitor configuration file const capConfig = { appId: config.meta.appID, @@ -85,7 +85,7 @@ run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder fs.writeJsonSync(path.cache('capacitor/capacitor.config.json'), capConfig, { spaces: 2 }); // Open PWA - run.exec('npx cap serve', { cwd: path.cache('capacitor') }); + run.custom('npx cap serve', { cwd: path.cache('capacitor') }); log.success('Completed PWA build.'); From c31bbc43a12e7e15cfa416f401e48a78a7b7f3ce Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 20:32:10 +0100 Subject: [PATCH 057/243] sync. run instead of callback --- scripts/build-pwa.js | 36 +++++++++++++++--------------------- scripts/build.js | 7 +++---- scripts/helper/run.js | 14 ++++++++------ scripts/postinstall.js | 7 +++---- scripts/test-eslint.js | 19 +++++++++---------- scripts/test-jest.js | 26 +++++++++++++------------- scripts/test.js | 7 +++---- 7 files changed, 54 insertions(+), 62 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index 4ee27883..2236396b 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -70,27 +70,21 @@ log.success('Created .htaccess file.'); const parcelCacheFolder = path.cache('parcel'); const buildFolder = path.build('pwa'); log.warning('Building PWA files - this may take a while ...'); -run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${buildFolder}" --no-source-maps`, (error) => { - // Build ok - if (!error) { - log.success('Built PWA files.'); +const pwaFilesBuild = run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${buildFolder}" --no-source-maps`); +if (pwaFilesBuild.code === 0) log.success('Built PWA files.'); +else log.error('Failed to build PWA files.'); - // Update Capacitor configuration file - const capConfig = { - appId: config.meta.appID, - appName: config.meta.name, - bundledWebRuntime: false, - webDir: '../../build/pwa', - }; - fs.writeJsonSync(path.cache('capacitor/capacitor.config.json'), capConfig, { spaces: 2 }); +// Update Capacitor configuration file +const capConfig = { + appId: config.meta.appID, + appName: config.meta.name, + bundledWebRuntime: false, + webDir: '../../build/pwa', +}; +const res = fs.writeJsonSync(path.cache('capacitor/capacitor.config.json'), capConfig, { spaces: 2 }); +log.success('Updated Capacitor configuration file.'); - // Open PWA - run.custom('npx cap serve', { cwd: path.cache('capacitor') }); +// Open PWA +run.custom('npx cap serve', { cwd: path.cache('capacitor') }); - log.success('Completed PWA build.'); - - // Build not ok - } else { - log.error('Failed to build PWA files.'); - } -}); +log.success('Completed PWA build.'); diff --git a/scripts/build.js b/scripts/build.js index e1f3bd1e..12938026 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -15,10 +15,9 @@ scripts.push('build-pwa'); const runNextScript = () => { if (scripts.length > 0) { - run.script(scripts.shift(), (error) => { - if (!error) runNextScript(); - else log.error('Failed to complete build routine.'); - }); + const scriptResult = run.script(scripts.shift()); + if (scriptResult.code === 0) runNextScript(); + else log.error('Failed to complete build routine.'); } else { log.success('Completed build routine.'); } diff --git a/scripts/helper/run.js b/scripts/helper/run.js index cc6ef52e..9da40674 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -2,14 +2,16 @@ const { exec } = require('shelljs'); const path = require('./path'); module.exports = { - silent(command, callback) { - exec(command, { cwd: path.project(), silent: true }, callback); + silent(command) { + return exec(command, { cwd: path.project(), silent: true }); }, - loud(command, callback) { - exec(command, { cwd: path.project(), silent: false }, callback); + loud(command) { + return exec(command, { cwd: path.project(), silent: false }); }, script(scriptName, callback) { - exec(`node ./scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }, callback); + return exec(`node ./scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }); + }, + custom(command, options) { + return exec(command, options); }, - exec(...args) { exec(...args); }, }; diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 7dccc309..048a34ed 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -13,10 +13,9 @@ const scripts = [ const runNextScript = () => { if (scripts.length > 0) { - run.script(scripts.shift(), (error) => { - if (!error) runNextScript(); - else log.error('Failed to complete postinstall routine.'); - }); + const scriptResult = run.script(scripts.shift()); + if (scriptResult.code === 0) runNextScript(); + else log.error('Failed to complete postinstall routine.'); } else { log.success('Completed postinstall routine.'); } diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index b1479781..aa2bc415 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,16 +12,15 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -run.silent(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/build/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`, (error) => { - if (error) { +const scriptResult = run.silent(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/build/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`); +if (scriptResult.code === 0) { + if (appConfig.test.eslint.keepReportWhenPassed) { opn(logFile, { wait: false }); - log.error(`Failed ESLint test. Please open ${logFileName} for details.`); } else { - if (appConfig.test.eslint.keepReportWhenPassed) { - opn(logFile, { wait: false }); - } else { - fs.remove(logFile); - } - log.success('Passed ESLint test.'); + fs.remove(logFile); } -}); + log.success('Passed ESLint test.'); +} else { + opn(logFile, { wait: false }); + log.error(`Failed ESLint test. Please open ${logFileName} for details.`); +} diff --git a/scripts/test-jest.js b/scripts/test-jest.js index 201a54b4..c04d8702 100644 --- a/scripts/test-jest.js +++ b/scripts/test-jest.js @@ -10,19 +10,19 @@ const jestConfigFile = path.project('.jestconfig.json'); const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); -run.silent(`npx jest --config "${jestConfigFile}"`, (error, stdout) => { - if (error && stdout.search(/No tests found/) !== -1) { - log.info('Skipped Jest tests, no specs found.'); - fs.remove(logFile); - } else if (error) { + +const scriptResult = run.silent(`npx jest --config "${jestConfigFile}"`); +if (scriptResult.code === 0) { + log.success('Passed Jest tests.'); + if (appConfig.test.jest.keepReportWhenPassed) { opn(logFile, { wait: false }); - log.error(`Failed Jest tests. Please open ${logFileName} for details.`); } else { - log.success('Passed Jest tests.'); - if (appConfig.test.jest.keepReportWhenPassed) { - opn(logFile, { wait: false }); - } else { - fs.remove(logFile); - } + fs.remove(logFile); } -}); +} else if (scriptResult.search(/No tests found/) !== -1) { + log.info('Skipped Jest tests, no specs found.'); + fs.remove(logFile); +} else if (error) { + opn(logFile, { wait: false }); + log.error(`Failed Jest tests. Please open ${logFileName} for details.`); +} diff --git a/scripts/test.js b/scripts/test.js index b9b8e92b..119d27cf 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -10,10 +10,9 @@ if (config.test.eslint.runOnTestCommand) tests.push(`node "${path.scripts('test- if (config.test.jest.runOnTestCommand) tests.push(`node "${path.scripts('test-jest.js')}"`); if (tests.length > 0) { - run.loud(tests.join(' && '), (err) => { - if (err) log.error('Failed one or more tests.'); - else log.success('Passed all tests.'); - }); + const scriptResult = run.loud(tests.join(' && ')); + if (scriptResult.code === 0) log.success('Passed all tests.'); + else log.error('Failed one or more tests.'); } else { log.info('No tests configured.'); } From f4d2596e1930e26d6ebb683a159eb9da637d2fef Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 2 Jan 2019 20:45:49 +0100 Subject: [PATCH 058/243] warning for long time need --- scripts/dev.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/dev.js b/scripts/dev.js index b8a2c101..dba0e5d8 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -33,5 +33,5 @@ log.success('Prepared main script file.'); // Build files const parcelCacheFolder = path.cache('parcel'); -log.info('Building development files - this may take a while ...'); +log.warning('Building development files - this may take a while ...'); run.loud(`npx parcel "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --open`); From 656c9f40fb398fc48eb901073e97a2ae6d88c9ab Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 13:54:59 +0100 Subject: [PATCH 059/243] improved dev and build processes --- scripts/build-ios.js | 31 +++++++ scripts/build-pwa.js | 137 +++++++++++++---------------- scripts/build-web.js | 34 +++++++ scripts/build.js | 3 + scripts/dev.js | 44 ++++----- scripts/helper/run.js | 5 +- scripts/install-capacitor.js | 27 ++++++ scripts/postinstall.js | 1 + scripts/test-eslint.js | 16 +++- scripts/test-jest.js | 2 +- scripts/update-capacitor-config.js | 22 +++++ scripts/update-gitignore-config.js | 5 +- scripts/update-index-file.js | 47 ++++++++++ scripts/update-main-file.js | 27 ++++++ scripts/update-manifest-file.js | 48 ++++++++++ templates/.htaccess | 3 + templates/index.html | 5 +- templates/manifest.webmanifest | 13 ++- templates/robots.txt | 2 + 19 files changed, 361 insertions(+), 111 deletions(-) create mode 100644 scripts/build-ios.js create mode 100644 scripts/build-web.js create mode 100644 scripts/install-capacitor.js create mode 100644 scripts/update-capacitor-config.js create mode 100644 scripts/update-index-file.js create mode 100644 scripts/update-main-file.js create mode 100644 scripts/update-manifest-file.js create mode 100644 templates/.htaccess create mode 100644 templates/robots.txt diff --git a/scripts/build-ios.js b/scripts/build-ios.js new file mode 100644 index 00000000..ab6303bf --- /dev/null +++ b/scripts/build-ios.js @@ -0,0 +1,31 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); +const run = require('./helper/run'); + +// Install Capacitor +if (run.script('install-capacitor').code !== 0) process.exit(1); + +// Update Capacitor configuration +if (run.script('update-capacitor-config').code !== 0) process.exit(1); + +// Add iOS project folder +const iosProjectFolder = path.project('ios'); +if (fs.pathExistsSync(iosProjectFolder)) { + log.info('iOS project folder already exists.'); +} else { + log.warning('Adding iOS project folder - this may take a while ...'); + const addIOSScript = run.loud('npx cap add ios'); + if (addIOSScript.code === 0) log.success('Added iOS project folder.'); + else log.error('Failed to add iOS project folder.'); +} + +// Updating the iOS folder +log.warning('Updating the iOS project folder - this may take a while ...'); +const updateScript = run.loud('npx cap sync ios'); +if (updateScript.code === 0) log.success('Updated the iOS project folder.'); +else log.error('Failed to update the iOS project folder.'); + +// Open Xcode +run.loud('npx cap open ios'); diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index 2236396b..f7d89d22 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -1,90 +1,77 @@ +// Load modules const fs = require('fs-extra'); const path = require('./helper/path'); const run = require('./helper/run'); const log = require('./helper/logger'); -// Empty cache folder -fs.emptyDirSync(path.cache('build-pwa')); +// Define cache folder +const cacheFolder = path.cache('pwa'); -// Read app config -const config = fs.readJsonSync(path.app('config.json')); +// Empty cache folder +try { + fs.emptyDirSync(cacheFolder); + log.success('Emptied PWA build cache folder.'); +} catch (e) { + log.error('Failed to empty PWA build cache folder.'); +} -// Prepare index.html file -const cachedIndexFile = path.cache('build-pwa/index.html'); -let indexFileContent = fs.readFileSync(path.templates('index.html'), { encoding: 'utf8' }); -indexFileContent = indexFileContent.replace(/\{name\}/g, config.meta.name); -indexFileContent = indexFileContent.replace(/\{description\}/g, config.meta.description); -indexFileContent = indexFileContent.replace(/\{language\}/g, config.meta.language); -indexFileContent = indexFileContent.replace(/\{androidThemeColor\}/g, config.frontend.android.themeColor); -indexFileContent = indexFileContent.replace(/\{relatedITunesApplicationID\}/g, config.frontend.ios.relatedITunesApplicationID); -fs.writeFileSync(cachedIndexFile, indexFileContent); -log.success('Prepared index file.'); +// Copy web build files +try { + fs.copySync(path.cache('web'), cacheFolder); + log.success('Copied web build files.'); +} catch (e) { + log.error('Failed to copy web build files.'); +} -// Prepare manifest file -const cachedManifestFile = path.cache('build-pwa/manifest.webmanifest'); -const manifestFileContent = fs.readJsonSync(path.templates('manifest.webmanifest')); -manifestFileContent.name = config.meta.name; -manifestFileContent.short_name = config.meta.shortName; -manifestFileContent.description = config.meta.description; -manifestFileContent.background_color = config.frontend.android.backgroundColor; -manifestFileContent.theme_color = config.frontend.android.themeColor; -manifestFileContent.icons = [ - { - src: '../icons/icon-192px.png', - sizes: '192x192', - type: 'image/png', - }, - { - src: '../icons/icon-512px.png', - sizes: '512x512', - type: 'image/png', - }, -]; -const playStoreId = config.frontend.android.relatedPlayStoreApplicationID; -manifestFileContent.related_applications[0].id = playStoreId; -fs.writeJsonSync(cachedManifestFile, manifestFileContent, { spaces: 2 }); -log.success('Prepared manifest file.'); +// Copy robots.txt file +try { + fs.copySync(path.templates('robots.txt'), path.resolve(cacheFolder, 'robots.txt')); + log.success('Copied robots.txt file.'); +} catch (e) { + log.error('Failed to copy robots.txt file.'); +} -// Prepare main.js file -const cachedMainFile = path.cache('build-pwa/main.js'); -let mainFileContent = fs.readFileSync(path.templates('main.js'), { encoding: 'utf8' }); -mainFileContent = mainFileContent.replace('./app/app.vue', path.relative(path.cache('build-pwa'), path.app('app.vue'))); -fs.writeFileSync(cachedMainFile, mainFileContent); -log.success('Prepared main script file.'); +// Copy .htaccess file +try { + fs.copySync(path.templates('.htaccess'), path.resolve(cacheFolder, '.htaccess')); + log.success('Copied .htaccess file.'); +} catch (e) { + log.error('Failed to copy .htaccess file.'); +} -// Create robots.txt file -const robotsFile = path.build('pwa/robots.txt'); -const robotsFileContent = 'User-Agent: *\nDisallow:'; -fs.writeFileSync(robotsFile, robotsFileContent); -log.success('Created robots.txt file.'); +// Add manifest tag to index.html file +const indexFile = path.resolve(cacheFolder, 'index.html'); +let indexFileContent = ''; +try { + indexFileContent = fs.readFileSync(indexFile, { encoding: 'utf-8' }); + log.success('Read main.js template file.'); +} catch (e) { + log.error('Failed to read main.js template file.'); +} +const manifestTag = ''; +const newIndexFileContent = indexFileContent.replace('', `${manifestTag}`); +try { + fs.writeFileSync(indexFile, newIndexFileContent); + log.success('Added manifest tag to index.html file.'); +} catch (e) { + log.error('Failed to add manifest tag to index.html file.'); +} -// Create .htaccess file -const htaccessFile = path.build('pwa/.htaccess'); -const htaccessFileContent = '\n' - + 'Header set Cache-Control "max-age=31536000, public"\n' - + ''; -fs.writeFileSync(htaccessFile, htaccessFileContent); -log.success('Created .htaccess file.'); +// Install Capacitor +if (run.script('install-capacitor').code !== 0) process.exit(1); -// Build files -const parcelCacheFolder = path.cache('parcel'); -const buildFolder = path.build('pwa'); -log.warning('Building PWA files - this may take a while ...'); -const pwaFilesBuild = run.loud(`npx parcel build "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${buildFolder}" --no-source-maps`); -if (pwaFilesBuild.code === 0) log.success('Built PWA files.'); -else log.error('Failed to build PWA files.'); +// Update Capacitor configuration +if (run.script('update-capacitor-config').code !== 0) process.exit(1); -// Update Capacitor configuration file -const capConfig = { - appId: config.meta.appID, - appName: config.meta.name, - bundledWebRuntime: false, - webDir: '../../build/pwa', -}; -const res = fs.writeJsonSync(path.cache('capacitor/capacitor.config.json'), capConfig, { spaces: 2 }); -log.success('Updated Capacitor configuration file.'); +// Replace build files +const buildFolder = path.project('pwa'); +try { + fs.removeSync(buildFolder); + fs.copySync(cacheFolder, buildFolder); + log.success('Copied PWA build files to folder /pwa'); +} catch (e) { + log.error('Failed to copy PWA build files to folder /pwa'); +} // Open PWA -run.custom('npx cap serve', { cwd: path.cache('capacitor') }); - -log.success('Completed PWA build.'); +run.loud(`cd "${path.cache()}" && npx cap serve`); diff --git a/scripts/build-web.js b/scripts/build-web.js new file mode 100644 index 00000000..18a0242c --- /dev/null +++ b/scripts/build-web.js @@ -0,0 +1,34 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); +const run = require('./helper/run'); + +// Define cache folder +const cacheFolder = path.cache('web'); + +// Empty cache folder +try { + fs.emptyDirSync(cacheFolder); + log.success('Emptied web build cache folder.'); +} catch (e) { + log.error('Failed to empty web build cache folder.'); +} + +// Update index.html file +if (run.script('update-index-file').code !== 0) process.exit(1); + +// Update main.js file +if (run.script('update-main-file').code !== 0) process.exit(1); + +// Build files +const parcelCacheFolder = path.cache('parcel'); +log.warning('Building web files - this may take a while ...'); +const webFilesBuild = run.loud(` + npx parcel build "${path.cache('index.html')}" + --cache-dir "${parcelCacheFolder}" + --out-dir "${cacheFolder}" + --no-source-maps +`.replace(/\n/g, ' ')); +if (webFilesBuild.code === 0) log.success('Built www files.'); +else log.error('Failed to build www files.'); diff --git a/scripts/build.js b/scripts/build.js index 12938026..55bd0f1f 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -11,10 +11,13 @@ if (config.test.eslint.runBeforeBuild) scripts.push('test-eslint'); if (config.test.jest.runBeforeBuild) scripts.push('test-jest'); scripts.push('build-icons'); +scripts.push('build-web'); scripts.push('build-pwa'); +scripts.push('build-ios'); const runNextScript = () => { if (scripts.length > 0) { + log.debug('run next'); const scriptResult = run.script(scripts.shift()); if (scriptResult.code === 0) runNextScript(); else log.error('Failed to complete build routine.'); diff --git a/scripts/dev.js b/scripts/dev.js index dba0e5d8..d7bad4ae 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -1,37 +1,31 @@ const fs = require('fs-extra'); -const path = require('./helper/path'); const log = require('./helper/logger'); +const path = require('./helper/path'); const run = require('./helper/run'); -// Define cache folder for development build -const cacheFolder = path.cache('buid-dev'); +// Define cache folder +const cacheFolder = path.cache('dev'); // Empty cache folder -fs.emptyDirSync(cacheFolder); - -// Read app config -const config = fs.readJsonSync(path.app('config.json')); +try { + fs.emptyDirSync(cacheFolder); + log.success('Emptied dev build cache folder.'); +} catch (e) { + log.error('Failed to empty dev build cache folder.'); +} -// Prepare index.html file -const cachedIndexFile = path.cache(cacheFolder, 'index.html'); -let indexFileContent = fs.readFileSync(path.templates('index.html'), { encoding: 'utf8' }); -indexFileContent = indexFileContent.replace(/\{name\}/g, config.meta.name); -indexFileContent = indexFileContent.replace(/\{description\}/g, config.meta.description); -indexFileContent = indexFileContent.replace(/\{language\}/g, config.meta.language); -indexFileContent = indexFileContent.replace(/\{androidThemeColor\}/g, config.frontend.android.themeColor); -indexFileContent = indexFileContent.replace(/\{relatedITunesApplicationID\}/g, config.frontend.ios.relatedITunesApplicationID); -indexFileContent = indexFileContent.replace(//, ''); -fs.writeFileSync(cachedIndexFile, indexFileContent); -log.success('Prepared index file.'); +// Update index.html file +if (run.script('update-index-file').code !== 0) process.exit(1); -// Prepare main.js file -const cachedMainFile = path.cache(cacheFolder, 'main.js'); -let mainFileContent = fs.readFileSync(path.templates('main.js'), { encoding: 'utf8' }); -mainFileContent = mainFileContent.replace('./app/app.vue', path.relative(path.cache(cacheFolder), path.app('app.vue'))); -fs.writeFileSync(cachedMainFile, mainFileContent); -log.success('Prepared main script file.'); +// Update main.js file +if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building development files - this may take a while ...'); -run.loud(`npx parcel "${cachedIndexFile}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --open`); +run.loud(` + npx parcel "${path.cache('index.html')}" + --cache-dir "${parcelCacheFolder}" + --out-dir "${cacheFolder}" + --open +`.replace(/\n/g, ' ')); diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 9da40674..39941905 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -8,10 +8,7 @@ module.exports = { loud(command) { return exec(command, { cwd: path.project(), silent: false }); }, - script(scriptName, callback) { + script(scriptName) { return exec(`node ./scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }); }, - custom(command, options) { - return exec(command, options); - }, }; diff --git a/scripts/install-capacitor.js b/scripts/install-capacitor.js new file mode 100644 index 00000000..b17e5aec --- /dev/null +++ b/scripts/install-capacitor.js @@ -0,0 +1,27 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); +const run = require('./helper/run'); + +// Install Cacpacitor Core +const CorePath = path.project('node_modules/@capacitor/core'); +if (fs.pathExistsSync(CorePath)) { + log.info('Capacitor Core already installed.'); +} else { + log.warning('Installing Capacitor Core - this may take a while ...'); + const installScript = run.loud('npm install @capacitor/core'); + if (installScript.code === 0) log.success('Installed Capacitor Core.'); + else log.error('Failed to install Capacitor Core'); +} + +// Install Cacpacitor CLI +const cliPath = path.project('node_modules/@capacitor/cli'); +if (fs.pathExistsSync(cliPath)) { + log.info('Capacitor CLI already installed.'); +} else { + log.warning('Installing Capacitor CLI - this may take a while ...'); + const installScript = run.loud('npm install @capacitor/cli'); + if (installScript.code === 0) log.success('Installed Capacitor CLI.'); + else log.error('Failed to install Capacitor CLI'); +} diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 048a34ed..52b01515 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -9,6 +9,7 @@ const scripts = [ 'update-jest-config', 'update-license-date', 'create-app-folder', + 'install-capacitor', ]; const runNextScript = () => { diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index aa2bc415..b684ae9f 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,7 +12,21 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -const scriptResult = run.silent(`npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/build/" --ext .js --ext .vue --fix --config "${configFile}" --output-file "${logFile}" --format html --cache --cache-location "${cacheFile}"`); +const scriptResult = run.loud(` + npx eslint "${path.project()}" + --ignore-pattern "/node_modules/" + --ignore-pattern "/pwa/" + --ignore-pattern "/ios/" + --ignore-pattern "/android/" + --ext .js + --ext .vue + --fix + --config "${configFile}" + --output-file "${logFile}" + --format html + --cache + --cache-location "${cacheFile}" +`.replace(/\n/g, ' ')); if (scriptResult.code === 0) { if (appConfig.test.eslint.keepReportWhenPassed) { opn(logFile, { wait: false }); diff --git a/scripts/test-jest.js b/scripts/test-jest.js index c04d8702..0573b8f8 100644 --- a/scripts/test-jest.js +++ b/scripts/test-jest.js @@ -22,7 +22,7 @@ if (scriptResult.code === 0) { } else if (scriptResult.search(/No tests found/) !== -1) { log.info('Skipped Jest tests, no specs found.'); fs.remove(logFile); -} else if (error) { +} else { opn(logFile, { wait: false }); log.error(`Failed Jest tests. Please open ${logFileName} for details.`); } diff --git a/scripts/update-capacitor-config.js b/scripts/update-capacitor-config.js new file mode 100644 index 00000000..3bb96420 --- /dev/null +++ b/scripts/update-capacitor-config.js @@ -0,0 +1,22 @@ +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +// Read app config +const config = fs.readJsonSync(path.app('config.json')); + +// Create Capacitor config object +const capConfig = { + appId: config.meta.appID, + appName: config.meta.name, + bundledWebRuntime: false, + webDir: path.cache('web'), +}; + +// Update Capacitor config file +try { + fs.outputJsonSync(path.project('capacitor.config.json'), capConfig, { spaces: 2 }); + log.success('Updated the Capacitor configuration file.'); +} catch (e) { + log.error('Failed to update the Capacitor configuration file.'); +} diff --git a/scripts/update-gitignore-config.js b/scripts/update-gitignore-config.js index ac95737e..9ea3dcf5 100644 --- a/scripts/update-gitignore-config.js +++ b/scripts/update-gitignore-config.js @@ -13,13 +13,16 @@ const toBeIgnored = [ '# Generated Files', '.cache/', '.git/', - 'build', + 'pwa', + 'ios', + 'android', 'node_modules/', '*.tgz', '.editorconfig', '.eslintrc.json', '.gitignore', '.jestconfig.json', + 'capacitor.config.json', ]; fs.writeFileSync(file, toBeIgnored.join('\n')); diff --git a/scripts/update-index-file.js b/scripts/update-index-file.js new file mode 100644 index 00000000..743a1b33 --- /dev/null +++ b/scripts/update-index-file.js @@ -0,0 +1,47 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Read index file template +const templateFile = path.templates('index.html'); +let templateFileContent = ''; +try { + templateFileContent = fs.readFileSync(templateFile, { encoding: 'utf-8' }); + log.success('Read index.html template file.'); +} catch (e) { + log.error('Failed to read index.html template file.'); +} + +// Replace variables in index file +const variables = { + language: config.meta.language, + androidThemeColor: config.frontend.android.themeColor, + description: config.meta.description, + name: config.meta.name, + relatedITunesApplicationID: config.frontend.ios.relatedITunesApplicationID, +}; +let indexFileContent = templateFileContent; +Object.keys(variables).forEach((key) => { + const re = new RegExp(`\\{${key}\\}`, 'g'); + indexFileContent = indexFileContent.replace(re, variables[key]); +}); + +// Update index.html file +const indexFile = path.cache('index.html'); +try { + fs.writeFileSync(indexFile, indexFileContent); + log.success('Updated index.html file.'); +} catch (e) { + log.error('Failed to update index.html file.'); +} diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js new file mode 100644 index 00000000..7705e6ea --- /dev/null +++ b/scripts/update-main-file.js @@ -0,0 +1,27 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +// Read main file template +const templateFile = path.templates('main.js'); +let templateFileContent = ''; +try { + templateFileContent = fs.readFileSync(templateFile, { encoding: 'utf-8' }); + log.success('Read main.js template file.'); +} catch (e) { + log.error('Failed to read main.js template file.'); +} + +// Replace path to app component +const relativeAppComponentPath = path.relative(path.cache(), path.app('app.vue')); +const mainFileContent = templateFileContent.replace('./app/app.vue', relativeAppComponentPath); + +// Update main.js file +const mainFile = path.cache('main.js'); +try { + fs.writeFileSync(mainFile, mainFileContent); + log.success('Updated main.js file.'); +} catch (e) { + log.error('Failed to update main.js file.'); +} diff --git a/scripts/update-manifest-file.js b/scripts/update-manifest-file.js new file mode 100644 index 00000000..5a3f0547 --- /dev/null +++ b/scripts/update-manifest-file.js @@ -0,0 +1,48 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Read manifest file template +const templateFile = path.templates('manifest.webmanifest'); +let templateFileContent = ''; +try { + templateFileContent = fs.readFileSync(templateFile, { encoding: 'utf-8' }); + log.success('Read manifest.webmanifest template file.'); +} catch (e) { + log.error('Failed to read manifest.webmanifest template file.'); +} + +// Replace variables in manifest file +const variables = { + name: config.meta.name, + shortName: config.meta.shortName, + description: config.meta.description, + androidBackgroundColor: config.frontend.android.backgroundColor, + androidThemeColor: config.frontend.android.themeColor, + relatedPlayStoreApplicationID: config.frontend.android.relatedPlayStoreApplicationID, +}; +let manifestFileContent = templateFileContent; +Object.keys(variables).forEach((key) => { + const re = new RegExp(`\\{${key}\\}`, 'g'); + manifestFileContent = manifestFileContent.replace(re, variables[key]); +}); + +// Update manifest file +const manifestFile = path.cache('manifest.webmanifest'); +try { + fs.writeFileSync(manifestFile, manifestFileContent); + log.success('Updated manifest.webmanifest file.'); +} catch (e) { + log.error('Failed to update manifest.webmanifest file.'); +} diff --git a/templates/.htaccess b/templates/.htaccess new file mode 100644 index 00000000..722ec3f4 --- /dev/null +++ b/templates/.htaccess @@ -0,0 +1,3 @@ + + Header set Cache-Control "max-age=31536000, public" + diff --git a/templates/index.html b/templates/index.html index 272c5f45..ad4c5c37 100644 --- a/templates/index.html +++ b/templates/index.html @@ -8,12 +8,11 @@ + {name} - -
- + diff --git a/templates/manifest.webmanifest b/templates/manifest.webmanifest index 57f854d6..9b35ac2a 100644 --- a/templates/manifest.webmanifest +++ b/templates/manifest.webmanifest @@ -5,7 +5,18 @@ "display": "standalone", "background_color" : "{androidBackgroundColor}", "theme_color": "{androidThemeColor}", - "icons": [], + "icons": [ + { + "src": "./icons/icon-192px.png", + "sizes": "192x192", + "type": "image/png", + }, + { + "src": "./icons/icon-512px.png", + "sizes": "512x512", + "type": "image/png", + } + ], "scope": "/", "start_url": ".", "related_applications": [ diff --git a/templates/robots.txt b/templates/robots.txt new file mode 100644 index 00000000..0ad279c7 --- /dev/null +++ b/templates/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Disallow: From 5d6f8bcec89ff02b4aaddfc0e3cb41e2bf66af87 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 13:55:08 +0100 Subject: [PATCH 060/243] add max line length to editor config --- scripts/update-editor-config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/update-editor-config.js b/scripts/update-editor-config.js index 705cbc1e..d60769f5 100644 --- a/scripts/update-editor-config.js +++ b/scripts/update-editor-config.js @@ -9,6 +9,7 @@ const defaultConfig = [ 'insert_final_newline = true', 'indent_style = space', 'indent_size = 2', + 'max_line_length = 100', ]; const userConfig = fs.readJsonSync(path.app('config.json')).development.editorConfig.ownConfig; From 94ea25ad06c05f2d49cb15dcfa86f1d27645d357 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:02:06 +0100 Subject: [PATCH 061/243] remove debug comment --- scripts/build.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/build.js b/scripts/build.js index 55bd0f1f..9669a120 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -17,7 +17,6 @@ scripts.push('build-ios'); const runNextScript = () => { if (scripts.length > 0) { - log.debug('run next'); const scriptResult = run.script(scripts.shift()); if (scriptResult.code === 0) runNextScript(); else log.error('Failed to complete build routine.'); From 1b121f587632679eff372fa9f3581d03625f0d6e Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:22:55 +0100 Subject: [PATCH 062/243] async with callback --- scripts/helper/run.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 39941905..4abc70a3 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -2,10 +2,18 @@ const { exec } = require('shelljs'); const path = require('./path'); module.exports = { - silent(command) { + silent(command, callback) { + if (typeof callback === 'function') { + exec(command, { cwd: path.project(), silent: true }, callback); + return undefined; + } return exec(command, { cwd: path.project(), silent: true }); }, - loud(command) { + loud(command, callback) { + if (typeof callback === 'function') { + exec(command, { cwd: path.project(), silent: false }, callback); + return undefined; + } return exec(command, { cwd: path.project(), silent: false }); }, script(scriptName) { From 499e0ae1dc23a773c2ead8733853e1a38a2efde5 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:23:13 +0100 Subject: [PATCH 063/243] remove as buggy --- scripts/build-pwa.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index f7d89d22..b25a95aa 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -72,6 +72,3 @@ try { } catch (e) { log.error('Failed to copy PWA build files to folder /pwa'); } - -// Open PWA -run.loud(`cd "${path.cache()}" && npx cap serve`); From 0dfe749727795a3f167f8cd50e7dfcfdb95d5772 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:26:22 +0100 Subject: [PATCH 064/243] android build closes #824 --- scripts/build-android.js | 31 +++++++++++++++++++++++++++++++ scripts/build.js | 1 + 2 files changed, 32 insertions(+) create mode 100644 scripts/build-android.js diff --git a/scripts/build-android.js b/scripts/build-android.js new file mode 100644 index 00000000..1b85eb7d --- /dev/null +++ b/scripts/build-android.js @@ -0,0 +1,31 @@ +// Import modules +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); +const run = require('./helper/run'); + +// Install Capacitor +if (run.script('install-capacitor').code !== 0) process.exit(1); + +// Update Capacitor configuration +if (run.script('update-capacitor-config').code !== 0) process.exit(1); + +// Add Android project folder +const androidProjectFolder = path.project('android'); +if (fs.pathExistsSync(androidProjectFolder)) { + log.info('Android project folder already exists.'); +} else { + log.warning('Adding Android project folder - this may take a while ...'); + const addAndroidScript = run.loud('npx cap add android'); + if (addAndroidScript.code === 0) log.success('Added Android project folder.'); + else log.error('Failed to add Android project folder.'); +} + +// Updating the Android folder +log.warning('Updating the Android project folder - this may take a while ...'); +const updateScript = run.loud('npx cap sync android'); +if (updateScript.code === 0) log.success('Updated the Android project folder.'); +else log.error('Failed to update the Android project folder.'); + +// Open Xcode +run.loud('npx cap open android'); diff --git a/scripts/build.js b/scripts/build.js index 9669a120..89424a0c 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -14,6 +14,7 @@ scripts.push('build-icons'); scripts.push('build-web'); scripts.push('build-pwa'); scripts.push('build-ios'); +scripts.push('build-android'); const runNextScript = () => { if (scripts.length > 0) { From 8270407db71494ba3c88561e0a26a334bd5318eb Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:41:51 +0100 Subject: [PATCH 065/243] make build configurable --- scripts/build.js | 12 +++++++++--- templates/app/config.json | 6 ++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/scripts/build.js b/scripts/build.js index 89424a0c..645f7c42 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -12,9 +12,15 @@ if (config.test.jest.runBeforeBuild) scripts.push('test-jest'); scripts.push('build-icons'); scripts.push('build-web'); -scripts.push('build-pwa'); -scripts.push('build-ios'); -scripts.push('build-android'); + +if (config.build.pwa) scripts.push('build-pwa'); +if (config.build.ios) scripts.push('build-ios'); +if (config.build.android) scripts.push('build-android'); + +if (!config.build.pwa && !config.build.ios && !config.build.android) { + log.warning('Build disabled in configuration for PWA, iOS and Android.'); + process.exit(0); +} const runNextScript = () => { if (scripts.length > 0) { diff --git a/templates/app/config.json b/templates/app/config.json index 344c9795..5ce538cc 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -37,7 +37,9 @@ "ownConfig": [] } }, - "production": { - + "build": { + "pwa": true, + "ios": false, + "android": false } } From bd94a131206cf07159a64b703e5607753e4e1f9d Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:49:37 +0100 Subject: [PATCH 066/243] create app/config file first --- scripts/postinstall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 52b01515..38e5b95c 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -2,13 +2,13 @@ const run = require('./helper/run'); const log = require('./helper/logger'); const scripts = [ + 'create-app-folder', 'update-editor-config', 'update-gitignore-config', 'update-eslint-config', 'update-package-config', 'update-jest-config', 'update-license-date', - 'create-app-folder', 'install-capacitor', ]; From 4a57565427cad58c91608a9607da433a9b16d939 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 14:49:45 +0100 Subject: [PATCH 067/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7b6a325..b663d557 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.16", + "version": "3.0.0-alpha.19", "license": "MIT", "bin": { "app": "./cli/app.js" From a2349d4ca06edae1e1026e3b6d8d11e8d743b857 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 17:26:00 +0100 Subject: [PATCH 068/243] use short name for native builds --- scripts/update-capacitor-config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-capacitor-config.js b/scripts/update-capacitor-config.js index 3bb96420..9c804b94 100644 --- a/scripts/update-capacitor-config.js +++ b/scripts/update-capacitor-config.js @@ -8,7 +8,7 @@ const config = fs.readJsonSync(path.app('config.json')); // Create Capacitor config object const capConfig = { appId: config.meta.appID, - appName: config.meta.name, + appName: config.meta.shortName, bundledWebRuntime: false, webDir: path.cache('web'), }; From 4b09022e6984840cc515c1c3c93e39d545b8d51f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 17:26:05 +0100 Subject: [PATCH 069/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b663d557..f5051972 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.19", + "version": "3.0.0-alpha.20", "license": "MIT", "bin": { "app": "./cli/app.js" From 40aa984e3ade026dfa54776a1de0f16a63a53269 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 17:35:09 +0100 Subject: [PATCH 070/243] remove capacitor part from PWA build --- scripts/build-pwa.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index b25a95aa..05dddb15 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -57,12 +57,6 @@ try { log.error('Failed to add manifest tag to index.html file.'); } -// Install Capacitor -if (run.script('install-capacitor').code !== 0) process.exit(1); - -// Update Capacitor configuration -if (run.script('update-capacitor-config').code !== 0) process.exit(1); - // Replace build files const buildFolder = path.project('pwa'); try { From f1ff69e3458a25fbb742e1a1645891f4426a832b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 17:35:19 +0100 Subject: [PATCH 071/243] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f5051972..5a8cf3df 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.20", + "version": "3.0.0-alpha.21", "license": "MIT", "bin": { "app": "./cli/app.js" From 27e3c9fb50919dace4032de4b4a97677642d96ae Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 18:49:56 +0100 Subject: [PATCH 072/243] remove build path --- scripts/helper/path.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/helper/path.js b/scripts/helper/path.js index 8bc3fda5..f923a4f0 100644 --- a/scripts/helper/path.js +++ b/scripts/helper/path.js @@ -5,13 +5,12 @@ const isInstalled = fs.pathExistsSync(path.resolve(__dirname, '../../../../packa // Framework related shortcuts path.framework = (...nav) => path.resolve(__dirname, '../../', ...nav); -path.templates = (...nav) => path.resolve(__dirname, '../../templates', ...nav); -path.scripts = (...nav) => path.resolve(__dirname, '../', ...nav); path.cache = (...nav) => path.resolve(__dirname, '../../.cache', ...nav); +path.scripts = (...nav) => path.resolve(__dirname, '../', ...nav); +path.templates = (...nav) => path.resolve(__dirname, '../../templates', ...nav); // Project related shortcuts path.project = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../' : '../../', ...nav); path.app = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../app' : '../../templates/app', ...nav); -path.build = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../build' : '../../build', ...nav); module.exports = path; From 5ba38b71456adefe01f0abef3d3928107c664812 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 19:04:19 +0100 Subject: [PATCH 073/243] add contribution guidelines --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 4f992a9e..3656ad6d 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,20 @@ App Framework 3 is under development. **For production usage please use [App Fra Updating does not work properly as necessary scripts are not completed. To test the newest development version, you should create a new app. + +## Contribution + +### Setup + +1. Run `clone https://github.com/scriptPilot/app-framework` to clone this repository +2. Run `cd app-framework` to open the repository folder +3. Run `npm install` to install all dependencies +4. Run `sudo npm link` to make CLI available in development mode + +### New Feature or Bugfix + +1. Create an [issue](https://github.com/scriptPilot/app-framework/issues) in GitHub +2. Create a branch with name `issue-` +3. Develop and test your solution, update the documentation +4. Commit your changes on the issue branch +5. Create a pull request with note `closes issue ` From 70b7652f7b68ff09b0eb99a0264dad4e4188ca5c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 19:04:31 +0100 Subject: [PATCH 074/243] improve build routine --- scripts/build-android.js | 6 ------ scripts/build-ios.js | 6 ------ scripts/build.js | 35 +++++++++++++++++++++++------------ 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/scripts/build-android.js b/scripts/build-android.js index 1b85eb7d..b36948e4 100644 --- a/scripts/build-android.js +++ b/scripts/build-android.js @@ -4,12 +4,6 @@ const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); -// Install Capacitor -if (run.script('install-capacitor').code !== 0) process.exit(1); - -// Update Capacitor configuration -if (run.script('update-capacitor-config').code !== 0) process.exit(1); - // Add Android project folder const androidProjectFolder = path.project('android'); if (fs.pathExistsSync(androidProjectFolder)) { diff --git a/scripts/build-ios.js b/scripts/build-ios.js index ab6303bf..26944b7d 100644 --- a/scripts/build-ios.js +++ b/scripts/build-ios.js @@ -4,12 +4,6 @@ const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); -// Install Capacitor -if (run.script('install-capacitor').code !== 0) process.exit(1); - -// Update Capacitor configuration -if (run.script('update-capacitor-config').code !== 0) process.exit(1); - // Add iOS project folder const iosProjectFolder = path.project('ios'); if (fs.pathExistsSync(iosProjectFolder)) { diff --git a/scripts/build.js b/scripts/build.js index 645f7c42..c7eafb40 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,35 +1,46 @@ +// Import modules const fs = require('fs-extra'); const run = require('./helper/run'); const path = require('./helper/path'); const log = require('./helper/logger'); -const config = fs.readJsonSync(path.app('config.json')); +// Load app configuration +let config = {}; +try { + config = fs.readJsonSync(path.app('config.json')); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} -const scripts = []; +// No build targets configured warning +if (!config.build.pwa && !config.build.ios && !config.build.android) { + log.warning('Build disabled in configuration for PWA, iOS and Android.'); + process.exit(0); +} +// Define scripts to run +const scripts = []; if (config.test.eslint.runBeforeBuild) scripts.push('test-eslint'); if (config.test.jest.runBeforeBuild) scripts.push('test-jest'); - scripts.push('build-icons'); scripts.push('build-web'); - +if (config.build.ios || config.build.android) { + scripts.push('install-capacitor') + scripts.push('update-capacitor-config') +} if (config.build.pwa) scripts.push('build-pwa'); if (config.build.ios) scripts.push('build-ios'); if (config.build.android) scripts.push('build-android'); -if (!config.build.pwa && !config.build.ios && !config.build.android) { - log.warning('Build disabled in configuration for PWA, iOS and Android.'); - process.exit(0); -} - +// Run scripts const runNextScript = () => { if (scripts.length > 0) { const scriptResult = run.script(scripts.shift()); if (scriptResult.code === 0) runNextScript(); else log.error('Failed to complete build routine.'); - } else { - log.success('Completed build routine.'); } }; - runNextScript(); + +log.success('Completed the build routine.') From 8322be8eb9374d99a4b71d39a78e82e36783b021 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 19:05:52 +0100 Subject: [PATCH 075/243] version bump, vue update, eslint update --- package-lock.json | 45 +++++++++++++++++++++++++++++++-------------- package.json | 6 +++--- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 15cc4e69..4de7d137 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.16", + "version": "3.0.0-alpha.22", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1503,19 +1503,36 @@ } }, "@vue/component-compiler-utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz", - "integrity": "sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.4.0.tgz", + "integrity": "sha512-LZyagnP+93GPiVHhu6HELEuHaSe83tfVrUgfl3ugwEc/k5yVbMu3OdaWrVqNo4hh1KK8o5fYOk2E/QpsfAxqiQ==", "requires": { "consolidate": "^0.15.1", "hash-sum": "^1.0.2", "lru-cache": "^4.1.2", "merge-source-map": "^1.1.0", - "postcss": "^6.0.20", - "postcss-selector-parser": "^3.1.1", + "postcss": "^7.0.7", + "postcss-selector-parser": "^5.0.0", "prettier": "1.13.7", - "source-map": "^0.5.6", + "source-map": "^0.7.3", "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } } }, "abab": { @@ -3967,9 +3984,9 @@ "integrity": "sha512-jSPT4rVmNetkeCIyrvvOM0wJtgoUSbKHIUDoOGzIISsg51eWN/nISPNKVM+jXMMDI9oowbyapOnpKSXlsLiDpQ==" }, "eslint-plugin-vue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.0.0.tgz", - "integrity": "sha512-mSv2Ebz3RaPP+XJO/mu7F+SdR9lrMyGISSExnarLFqqf3pF5wTmwWNrhHW1o9zKzKI811UVTIIkWJJvgO6SsUQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.1.0.tgz", + "integrity": "sha512-C7avvbGLb9J1PyGiFolPcGR4ljUc+dKm5ZJdrUKXwXFxHHx4SqOmRI29AsFyW7PbCGcnOvIlaq7NJS6HDIak+g==", "requires": { "vue-eslint-parser": "^4.0.2" } @@ -8939,13 +8956,13 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", + "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", "requires": { "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "supports-color": "^5.5.0" }, "dependencies": { "source-map": { diff --git a/package.json b/package.json index 5a8cf3df..792ee6fb 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.21", + "version": "3.0.0-alpha.22", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -16,14 +16,14 @@ "@capacitor/cli": "^1.0.0-beta.13", "@capacitor/core": "^1.0.0-beta.13", "@capacitor/ios": "^1.0.0-beta.13", - "@vue/component-compiler-utils": "^2.3.1", + "@vue/component-compiler-utils": "^2.4.0", "cli-color": "^1.4.0", "commander": "^2.19.0", "eslint": "^5.11.1", "eslint-config-airbnb-base": "^13.1.0", "eslint-plugin-import": "^2.14.0", "eslint-plugin-jest": "^22.1.2", - "eslint-plugin-vue": "^5.0.0", + "eslint-plugin-vue": "^5.1.0", "framework7": "^3.6.3", "framework7-vue": "^3.6.3", "fs-extra": "^7.0.1", From 6f05b9d6a75a6ab6dc030fa43d9c41a609c978ba Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 19:07:58 +0100 Subject: [PATCH 076/243] style guide added --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3656ad6d..e8cc63e1 100644 --- a/README.md +++ b/README.md @@ -37,3 +37,5 @@ To test the newest development version, you should create a new app. 3. Develop and test your solution, update the documentation 4. Commit your changes on the issue branch 5. Create a pull request with note `closes issue ` + +Please follow the [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript). From 2ad46555c73d0100821303e72ba457f62dab883d Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 19:13:17 +0100 Subject: [PATCH 077/243] tools for contribution added --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e8cc63e1..4f679adc 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,24 @@ To test the newest development version, you should create a new app. ## Contribution -### Setup +### Setup the Development Environment + +- [GitHub Desktop](https://desktop.github.com/) to manage GitHub repositories +- [Atom](https://atom.io/) as a code editor + - Package `language-vue-component` for [Vue single file component](https://vuejs.org/v2/guide/single-file-components.html) + - Package `editorconfig` to have same file formatting settings +- [Node.js](https://nodejs.org) as a local development server +- [Google Chrome](https://www.google.de/chrome) as a web browser with integrated [development tools](https://developers.google.com/web/tools/chrome-devtools/) + - Extension [Vue.js devtools](https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) to debug the Vue components + +### Setup the Repository 1. Run `clone https://github.com/scriptPilot/app-framework` to clone this repository 2. Run `cd app-framework` to open the repository folder 3. Run `npm install` to install all dependencies 4. Run `sudo npm link` to make CLI available in development mode -### New Feature or Bugfix +### Development Workflow 1. Create an [issue](https://github.com/scriptPilot/app-framework/issues) in GitHub 2. Create a branch with name `issue-` From 3686b81f547509faec30afe9ace43963aaceb7d8 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 21:58:01 +0100 Subject: [PATCH 078/243] eslint fix --- scripts/build-pwa.js | 1 - scripts/build.js | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index 05dddb15..bdeb1085 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -1,7 +1,6 @@ // Load modules const fs = require('fs-extra'); const path = require('./helper/path'); -const run = require('./helper/run'); const log = require('./helper/logger'); // Define cache folder diff --git a/scripts/build.js b/scripts/build.js index c7eafb40..2c79f6c0 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -26,8 +26,8 @@ if (config.test.jest.runBeforeBuild) scripts.push('test-jest'); scripts.push('build-icons'); scripts.push('build-web'); if (config.build.ios || config.build.android) { - scripts.push('install-capacitor') - scripts.push('update-capacitor-config') + scripts.push('install-capacitor'); + scripts.push('update-capacitor-config'); } if (config.build.pwa) scripts.push('build-pwa'); if (config.build.ios) scripts.push('build-ios'); @@ -43,4 +43,4 @@ const runNextScript = () => { }; runNextScript(); -log.success('Completed the build routine.') +log.success('Completed the build routine.'); From 2825f0a0f0a517593d411fb1230a9ffeafe9852f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 21:58:30 +0100 Subject: [PATCH 079/243] optimized script execution --- scripts/test.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/scripts/test.js b/scripts/test.js index 119d27cf..35f59668 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -5,14 +5,12 @@ const path = require('./helper/path'); const config = fs.readJsonSync(path.app('config.json')); -const tests = []; -if (config.test.eslint.runOnTestCommand) tests.push(`node "${path.scripts('test-eslint.js')}"`); -if (config.test.jest.runOnTestCommand) tests.push(`node "${path.scripts('test-jest.js')}"`); +if (config.test.eslint.runOnTestCommand) { + if (run.script('test-eslint').code !== 0) process.exit(1); +} -if (tests.length > 0) { - const scriptResult = run.loud(tests.join(' && ')); - if (scriptResult.code === 0) log.success('Passed all tests.'); - else log.error('Failed one or more tests.'); -} else { - log.info('No tests configured.'); +if (config.test.jest.runOnTestCommand) { + if (run.script('test-jest').code !== 0) process.exit(1); } + +log.success('Passed all tests.'); From 81e8841f2df0e5c55adc975035e5c045507a78ba Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 21:59:42 +0100 Subject: [PATCH 080/243] run external scripts silent --- scripts/build-android.js | 6 +++--- scripts/build-ios.js | 6 +++--- scripts/build-web.js | 2 +- scripts/dev.js | 2 +- scripts/install-capacitor.js | 4 ++-- scripts/test-eslint.js | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/build-android.js b/scripts/build-android.js index b36948e4..e9260224 100644 --- a/scripts/build-android.js +++ b/scripts/build-android.js @@ -10,16 +10,16 @@ if (fs.pathExistsSync(androidProjectFolder)) { log.info('Android project folder already exists.'); } else { log.warning('Adding Android project folder - this may take a while ...'); - const addAndroidScript = run.loud('npx cap add android'); + const addAndroidScript = run.silent'npx cap add android'); if (addAndroidScript.code === 0) log.success('Added Android project folder.'); else log.error('Failed to add Android project folder.'); } // Updating the Android folder log.warning('Updating the Android project folder - this may take a while ...'); -const updateScript = run.loud('npx cap sync android'); +const updateScript = run.silent'npx cap sync android'); if (updateScript.code === 0) log.success('Updated the Android project folder.'); else log.error('Failed to update the Android project folder.'); // Open Xcode -run.loud('npx cap open android'); +run.silent'npx cap open android'); diff --git a/scripts/build-ios.js b/scripts/build-ios.js index 26944b7d..4ecddb07 100644 --- a/scripts/build-ios.js +++ b/scripts/build-ios.js @@ -10,16 +10,16 @@ if (fs.pathExistsSync(iosProjectFolder)) { log.info('iOS project folder already exists.'); } else { log.warning('Adding iOS project folder - this may take a while ...'); - const addIOSScript = run.loud('npx cap add ios'); + const addIOSScript = run.silent'npx cap add ios'); if (addIOSScript.code === 0) log.success('Added iOS project folder.'); else log.error('Failed to add iOS project folder.'); } // Updating the iOS folder log.warning('Updating the iOS project folder - this may take a while ...'); -const updateScript = run.loud('npx cap sync ios'); +const updateScript = run.silent'npx cap sync ios'); if (updateScript.code === 0) log.success('Updated the iOS project folder.'); else log.error('Failed to update the iOS project folder.'); // Open Xcode -run.loud('npx cap open ios'); +run.silent'npx cap open ios'); diff --git a/scripts/build-web.js b/scripts/build-web.js index 18a0242c..1f300f7f 100644 --- a/scripts/build-web.js +++ b/scripts/build-web.js @@ -24,7 +24,7 @@ if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building web files - this may take a while ...'); -const webFilesBuild = run.loud(` +const webFilesBuild = run.silent` npx parcel build "${path.cache('index.html')}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" diff --git a/scripts/dev.js b/scripts/dev.js index d7bad4ae..fff918d9 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -23,7 +23,7 @@ if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building development files - this may take a while ...'); -run.loud(` +run.silent` npx parcel "${path.cache('index.html')}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" diff --git a/scripts/install-capacitor.js b/scripts/install-capacitor.js index b17e5aec..ba4ead6e 100644 --- a/scripts/install-capacitor.js +++ b/scripts/install-capacitor.js @@ -10,7 +10,7 @@ if (fs.pathExistsSync(CorePath)) { log.info('Capacitor Core already installed.'); } else { log.warning('Installing Capacitor Core - this may take a while ...'); - const installScript = run.loud('npm install @capacitor/core'); + const installScript = run.silent'npm install @capacitor/core'); if (installScript.code === 0) log.success('Installed Capacitor Core.'); else log.error('Failed to install Capacitor Core'); } @@ -21,7 +21,7 @@ if (fs.pathExistsSync(cliPath)) { log.info('Capacitor CLI already installed.'); } else { log.warning('Installing Capacitor CLI - this may take a while ...'); - const installScript = run.loud('npm install @capacitor/cli'); + const installScript = run.silent'npm install @capacitor/cli'); if (installScript.code === 0) log.success('Installed Capacitor CLI.'); else log.error('Failed to install Capacitor CLI'); } diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index b684ae9f..4f923645 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,7 +12,7 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -const scriptResult = run.loud(` +const scriptResult = run.silent` npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/pwa/" From aee13cafe7c8f92ededbc8de98dc87bbf7a26473 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 22:00:27 +0100 Subject: [PATCH 081/243] Revert "run external scripts silent" This reverts commit 81e8841f2df0e5c55adc975035e5c045507a78ba. --- scripts/build-android.js | 6 +++--- scripts/build-ios.js | 6 +++--- scripts/build-web.js | 2 +- scripts/dev.js | 2 +- scripts/install-capacitor.js | 4 ++-- scripts/test-eslint.js | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/build-android.js b/scripts/build-android.js index e9260224..b36948e4 100644 --- a/scripts/build-android.js +++ b/scripts/build-android.js @@ -10,16 +10,16 @@ if (fs.pathExistsSync(androidProjectFolder)) { log.info('Android project folder already exists.'); } else { log.warning('Adding Android project folder - this may take a while ...'); - const addAndroidScript = run.silent'npx cap add android'); + const addAndroidScript = run.loud('npx cap add android'); if (addAndroidScript.code === 0) log.success('Added Android project folder.'); else log.error('Failed to add Android project folder.'); } // Updating the Android folder log.warning('Updating the Android project folder - this may take a while ...'); -const updateScript = run.silent'npx cap sync android'); +const updateScript = run.loud('npx cap sync android'); if (updateScript.code === 0) log.success('Updated the Android project folder.'); else log.error('Failed to update the Android project folder.'); // Open Xcode -run.silent'npx cap open android'); +run.loud('npx cap open android'); diff --git a/scripts/build-ios.js b/scripts/build-ios.js index 4ecddb07..26944b7d 100644 --- a/scripts/build-ios.js +++ b/scripts/build-ios.js @@ -10,16 +10,16 @@ if (fs.pathExistsSync(iosProjectFolder)) { log.info('iOS project folder already exists.'); } else { log.warning('Adding iOS project folder - this may take a while ...'); - const addIOSScript = run.silent'npx cap add ios'); + const addIOSScript = run.loud('npx cap add ios'); if (addIOSScript.code === 0) log.success('Added iOS project folder.'); else log.error('Failed to add iOS project folder.'); } // Updating the iOS folder log.warning('Updating the iOS project folder - this may take a while ...'); -const updateScript = run.silent'npx cap sync ios'); +const updateScript = run.loud('npx cap sync ios'); if (updateScript.code === 0) log.success('Updated the iOS project folder.'); else log.error('Failed to update the iOS project folder.'); // Open Xcode -run.silent'npx cap open ios'); +run.loud('npx cap open ios'); diff --git a/scripts/build-web.js b/scripts/build-web.js index 1f300f7f..18a0242c 100644 --- a/scripts/build-web.js +++ b/scripts/build-web.js @@ -24,7 +24,7 @@ if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building web files - this may take a while ...'); -const webFilesBuild = run.silent` +const webFilesBuild = run.loud(` npx parcel build "${path.cache('index.html')}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" diff --git a/scripts/dev.js b/scripts/dev.js index fff918d9..d7bad4ae 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -23,7 +23,7 @@ if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building development files - this may take a while ...'); -run.silent` +run.loud(` npx parcel "${path.cache('index.html')}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" diff --git a/scripts/install-capacitor.js b/scripts/install-capacitor.js index ba4ead6e..b17e5aec 100644 --- a/scripts/install-capacitor.js +++ b/scripts/install-capacitor.js @@ -10,7 +10,7 @@ if (fs.pathExistsSync(CorePath)) { log.info('Capacitor Core already installed.'); } else { log.warning('Installing Capacitor Core - this may take a while ...'); - const installScript = run.silent'npm install @capacitor/core'); + const installScript = run.loud('npm install @capacitor/core'); if (installScript.code === 0) log.success('Installed Capacitor Core.'); else log.error('Failed to install Capacitor Core'); } @@ -21,7 +21,7 @@ if (fs.pathExistsSync(cliPath)) { log.info('Capacitor CLI already installed.'); } else { log.warning('Installing Capacitor CLI - this may take a while ...'); - const installScript = run.silent'npm install @capacitor/cli'); + const installScript = run.loud('npm install @capacitor/cli'); if (installScript.code === 0) log.success('Installed Capacitor CLI.'); else log.error('Failed to install Capacitor CLI'); } diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index 4f923645..b684ae9f 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,7 +12,7 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -const scriptResult = run.silent` +const scriptResult = run.loud(` npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/pwa/" From 314bac4dbc305a3b04f96adb8853334c9ef7f9a5 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 22:01:06 +0100 Subject: [PATCH 082/243] run external scripts silently --- scripts/build-android.js | 6 +++--- scripts/build-ios.js | 6 +++--- scripts/build-web.js | 2 +- scripts/dev.js | 2 +- scripts/install-capacitor.js | 4 ++-- scripts/test-eslint.js | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/build-android.js b/scripts/build-android.js index b36948e4..86bd5351 100644 --- a/scripts/build-android.js +++ b/scripts/build-android.js @@ -10,16 +10,16 @@ if (fs.pathExistsSync(androidProjectFolder)) { log.info('Android project folder already exists.'); } else { log.warning('Adding Android project folder - this may take a while ...'); - const addAndroidScript = run.loud('npx cap add android'); + const addAndroidScript = run.silent('npx cap add android'); if (addAndroidScript.code === 0) log.success('Added Android project folder.'); else log.error('Failed to add Android project folder.'); } // Updating the Android folder log.warning('Updating the Android project folder - this may take a while ...'); -const updateScript = run.loud('npx cap sync android'); +const updateScript = run.silent('npx cap sync android'); if (updateScript.code === 0) log.success('Updated the Android project folder.'); else log.error('Failed to update the Android project folder.'); // Open Xcode -run.loud('npx cap open android'); +run.silent('npx cap open android'); diff --git a/scripts/build-ios.js b/scripts/build-ios.js index 26944b7d..82d4dcd4 100644 --- a/scripts/build-ios.js +++ b/scripts/build-ios.js @@ -10,16 +10,16 @@ if (fs.pathExistsSync(iosProjectFolder)) { log.info('iOS project folder already exists.'); } else { log.warning('Adding iOS project folder - this may take a while ...'); - const addIOSScript = run.loud('npx cap add ios'); + const addIOSScript = run.silent('npx cap add ios'); if (addIOSScript.code === 0) log.success('Added iOS project folder.'); else log.error('Failed to add iOS project folder.'); } // Updating the iOS folder log.warning('Updating the iOS project folder - this may take a while ...'); -const updateScript = run.loud('npx cap sync ios'); +const updateScript = run.silent('npx cap sync ios'); if (updateScript.code === 0) log.success('Updated the iOS project folder.'); else log.error('Failed to update the iOS project folder.'); // Open Xcode -run.loud('npx cap open ios'); +run.silent('npx cap open ios'); diff --git a/scripts/build-web.js b/scripts/build-web.js index 18a0242c..28eb5e4c 100644 --- a/scripts/build-web.js +++ b/scripts/build-web.js @@ -24,7 +24,7 @@ if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building web files - this may take a while ...'); -const webFilesBuild = run.loud(` +const webFilesBuild = run.silent(` npx parcel build "${path.cache('index.html')}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" diff --git a/scripts/dev.js b/scripts/dev.js index d7bad4ae..0fc394b2 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -23,7 +23,7 @@ if (run.script('update-main-file').code !== 0) process.exit(1); // Build files const parcelCacheFolder = path.cache('parcel'); log.warning('Building development files - this may take a while ...'); -run.loud(` +run.silent(` npx parcel "${path.cache('index.html')}" --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" diff --git a/scripts/install-capacitor.js b/scripts/install-capacitor.js index b17e5aec..a5b0cf61 100644 --- a/scripts/install-capacitor.js +++ b/scripts/install-capacitor.js @@ -10,7 +10,7 @@ if (fs.pathExistsSync(CorePath)) { log.info('Capacitor Core already installed.'); } else { log.warning('Installing Capacitor Core - this may take a while ...'); - const installScript = run.loud('npm install @capacitor/core'); + const installScript = run.silent('npm install @capacitor/core'); if (installScript.code === 0) log.success('Installed Capacitor Core.'); else log.error('Failed to install Capacitor Core'); } @@ -21,7 +21,7 @@ if (fs.pathExistsSync(cliPath)) { log.info('Capacitor CLI already installed.'); } else { log.warning('Installing Capacitor CLI - this may take a while ...'); - const installScript = run.loud('npm install @capacitor/cli'); + const installScript = run.silent('npm install @capacitor/cli'); if (installScript.code === 0) log.success('Installed Capacitor CLI.'); else log.error('Failed to install Capacitor CLI'); } diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index b684ae9f..7a757f67 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,7 +12,7 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); -const scriptResult = run.loud(` +const scriptResult = run.silent(` npx eslint "${path.project()}" --ignore-pattern "/node_modules/" --ignore-pattern "/pwa/" From 0870a75bda57ad0947614cb79e7400da109ea075 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 3 Jan 2019 22:23:02 +0100 Subject: [PATCH 083/243] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 792ee6fb..5046a6a4 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.22", + "version": "3.0.0-alpha.23", "license": "MIT", "bin": { "app": "./cli/app.js" From 1f8d5d24a1d5bc2d7f49946ac6127e75a2d80558 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 12:53:37 +0100 Subject: [PATCH 084/243] typo --- scripts/build-pwa.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index bdeb1085..ddfdb162 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -43,9 +43,9 @@ const indexFile = path.resolve(cacheFolder, 'index.html'); let indexFileContent = ''; try { indexFileContent = fs.readFileSync(indexFile, { encoding: 'utf-8' }); - log.success('Read main.js template file.'); + log.success('Read index.html template file.'); } catch (e) { - log.error('Failed to read main.js template file.'); + log.error('Failed to read index.html template file.'); } const manifestTag = ''; const newIndexFileContent = indexFileContent.replace('', `${manifestTag}`); From ba7ab71260e6f09d19b2dbdff4d1fd72584ba9e8 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 12:56:34 +0100 Subject: [PATCH 085/243] hide vue ip generally --- templates/main.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/templates/main.js b/templates/main.js index b0b8ed42..16cc38dc 100644 --- a/templates/main.js +++ b/templates/main.js @@ -4,9 +4,7 @@ import 'framework7/css/framework7.css'; import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; import App from './app/app.vue'; -if (process.env.NODE_ENV === 'development') { - Vue.config.productionTip = false; -} +Vue.config.productionTip = false; Framework7.use(Framework7Vue); From c0d8ba7ea48f2daaf1a3f9f61b1a51c38a134f14 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 13:27:19 +0100 Subject: [PATCH 086/243] make offline service worker optional closes #796 --- package-lock.json | 15 +++++++++++- package.json | 1 + scripts/build-pwa.js | 50 +++++++++++++++++++++++++++++++++++++++ scripts/build-web.js | 8 +++++++ templates/app/config.json | 3 +++ templates/main.js | 17 ------------- 6 files changed, 76 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4de7d137..2ab4c15e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.22", + "version": "3.0.0-alpha.23", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4612,6 +4612,14 @@ "repeat-string": "^1.5.2" } }, + "find": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz", + "integrity": "sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=", + "requires": { + "traverse-chain": "~0.1.0" + } + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -12395,6 +12403,11 @@ "punycode": "^2.1.0" } }, + "traverse-chain": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", + "integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=" + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", diff --git a/package.json b/package.json index 5046a6a4..14d0927d 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "eslint-plugin-import": "^2.14.0", "eslint-plugin-jest": "^22.1.2", "eslint-plugin-vue": "^5.1.0", + "find": "^0.2.9", "framework7": "^3.6.3", "framework7-vue": "^3.6.3", "fs-extra": "^7.0.1", diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index ddfdb162..da2cf275 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -1,8 +1,19 @@ // Load modules const fs = require('fs-extra'); +const find = require('find'); const path = require('./helper/path'); const log = require('./helper/logger'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + // Define cache folder const cacheFolder = path.cache('pwa'); @@ -56,6 +67,45 @@ try { log.error('Failed to add manifest tag to index.html file.'); } +// Add service worker +if (config.pwa.includeOfflineServiceWorker) { + // Find main.js file (with hash in the middle) + const mainFileSearchResults = find.fileSync(/main\.(.+)\.js/, path.cache('pwa')); + if (mainFileSearchResults.length !== 1) log.error('Failed to find main.js file.'); + const mainFile = mainFileSearchResults[0]; + // Add installation script to main.js file + let mainFileContent = ''; + try { + mainFileContent = fs.readFileSync(mainFile, { encoding: 'utf-8' }); + log.success('Read main.js template file.'); + } catch (e) { + log.error('Failed to read main.js template file.'); + } + const serviceWorkerInstallationScript = ` + if ('serviceWorker' in navigator) { + window.addEventListener('load', () => { + navigator.serviceWorker.register('sw.js') + }) + } + `; + const newMainFileContent = `${mainFileContent}\n${serviceWorkerInstallationScript}`; + try { + fs.writeFileSync(mainFile, newMainFileContent); + log.success('Added service worker installation script to main.js file.'); + } catch (e) { + log.error('Failed to add service worker installation script to main.js file.'); + } + // Move service worker file in main cache folder + try { + fs.moveSync(path.cache('sw.js'), path.cache('pwa/sw.js'), { overwrite: true }); + log.success('Moved service worker to pwa cache folder.'); + } catch (e) { + log.error('Failed to move service worker to pwa cache folder.'); + } +} else { + log.info('Skipped offline service worker creation according configuration.'); +} + // Replace build files const buildFolder = path.project('pwa'); try { diff --git a/scripts/build-web.js b/scripts/build-web.js index 28eb5e4c..3c75ca47 100644 --- a/scripts/build-web.js +++ b/scripts/build-web.js @@ -32,3 +32,11 @@ const webFilesBuild = run.silent(` `.replace(/\n/g, ' ')); if (webFilesBuild.code === 0) log.success('Built www files.'); else log.error('Failed to build www files.'); + +// Move service worker file in main cache folder +try { + fs.moveSync(path.cache('web/sw.js'), path.cache('sw.js'), { overwrite: true }); + log.success('Moved service worker to cache folder.'); +} catch (e) { + log.error('Failed to move service worker to cache folder.'); +} diff --git a/templates/app/config.json b/templates/app/config.json index 5ce538cc..dc865031 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -41,5 +41,8 @@ "pwa": true, "ios": false, "android": false + }, + "pwa": { + "includeOfflineServiceWorker": true } } diff --git a/templates/main.js b/templates/main.js index 16cc38dc..08f9877a 100644 --- a/templates/main.js +++ b/templates/main.js @@ -12,20 +12,3 @@ export default new Vue({ el: '#app', render: c => c(App), }); - -if (process.env.NODE_ENV !== 'development' && 'serviceWorker' in navigator) { - window.addEventListener('load', () => { - const swPath = 'sw.js'; - navigator.serviceWorker.register(swPath).then((registration) => { - if (process.env.NODE_ENV === 'development') { - // eslint-disable-next-line no-console - console.log('ServiceWorker registration successful with scope: ', registration.scope); - } - }, (err) => { - if (process.env.NODE_ENV === 'development') { - // eslint-disable-next-line no-console - console.log('ServiceWorker registration failed: ', err); - } - }); - }); -} From 69a8e0374a728241b4961c437b89df3c7e46e8c3 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 13:27:43 +0100 Subject: [PATCH 087/243] debug objects properly --- scripts/helper/logger.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 560a1c77..1c8bda5f 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -8,7 +8,12 @@ const level = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).develo module.exports = { debug(msg) { if (level === 'debug') { - console.log(clc.bold.cyan('[DEBUG]'), clc.bold(msg)); // eslint-disable-line no-console + if (typeof msg === 'object' && msg !== null) { + console.log(clc.bold.cyan('[DEBUG]')); // eslint-disable-line no-console + console.dir(msg); // eslint-disable-line no-console + } else { + console.log(clc.bold.cyan('[DEBUG]'), clc.bold(msg)); // eslint-disable-line no-console + } } }, info(msg) { From 14ec15b1558e7a57323e04081afd3faf88c79d37 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 13:54:56 +0100 Subject: [PATCH 088/243] script debug logging closes #851 --- scripts/helper/logger.js | 13 +++++++------ scripts/helper/run.js | 22 ++++++++++++++++++++-- templates/app/config.json | 3 ++- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 1c8bda5f..32beedb7 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -1,13 +1,16 @@ -const clc = require('cli-color'); +// Import modules const fs = require('fs-extra'); +const clc = require('cli-color'); const path = require('./path'); +// Define debug mode const configFile = path.app('config.json'); -const level = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).development.logLevel : 'debug'; +const debugMode = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).debugMode : false; +// Export logger functions module.exports = { debug(msg) { - if (level === 'debug') { + if (debugMode) { if (typeof msg === 'object' && msg !== null) { console.log(clc.bold.cyan('[DEBUG]')); // eslint-disable-line no-console console.dir(msg); // eslint-disable-line no-console @@ -17,9 +20,7 @@ module.exports = { } }, info(msg) { - if (level === 'debug' || level === 'info') { - console.log(clc.bold.blue('[INFO]'), clc.bold(msg)); // eslint-disable-line no-console - } + console.log(clc.bold.blue('[INFO]'), clc.bold(msg)); // eslint-disable-line no-console }, success(msg) { console.log(clc.bold.green('[SUCCESS]'), clc.bold(msg)); // eslint-disable-line no-console diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 4abc70a3..0033896e 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -1,20 +1,38 @@ +// Import modules const { exec } = require('shelljs'); +const fs = require('fs-extra'); +const log = require('./logger'); const path = require('./path'); +// Define debug mode +const configFile = path.app('config.json'); +const debugMode = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).debugMode : false; + +// Export functions module.exports = { silent(command, callback) { if (typeof callback === 'function') { exec(command, { cwd: path.project(), silent: true }, callback); return undefined; } - return exec(command, { cwd: path.project(), silent: true }); + const res = exec(command, { cwd: path.project(), silent: true }); + if (debugMode) { + log.debug(`Command: ${command}`); + log.debug(res.stdout); + } + return res; }, loud(command, callback) { if (typeof callback === 'function') { exec(command, { cwd: path.project(), silent: false }, callback); return undefined; } - return exec(command, { cwd: path.project(), silent: false }); + const res = exec(command, { cwd: path.project(), silent: false }); + if (debugMode) { + log.debug(`Command: ${command}`); + log.debug(res.stdout); + } + return res; }, script(scriptName) { return exec(`node ./scripts/${scriptName}.js`, { cwd: path.framework(), silent: false }); diff --git a/templates/app/config.json b/templates/app/config.json index dc865031..d9e18fae 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -44,5 +44,6 @@ }, "pwa": { "includeOfflineServiceWorker": true - } + }, + "debugMode": false } From 86298f7f7814fab13477455ada9724aab0452515 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 14:12:18 +0100 Subject: [PATCH 089/243] let user configure gitignore closes #821 --- scripts/update-gitignore-config.js | 24 ++++++++++++++++++++++-- templates/app/config.json | 26 +++++++++++++++++++++----- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/scripts/update-gitignore-config.js b/scripts/update-gitignore-config.js index 9ea3dcf5..7287be39 100644 --- a/scripts/update-gitignore-config.js +++ b/scripts/update-gitignore-config.js @@ -1,7 +1,19 @@ +// Import modules const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Default value const file = path.project('.gitignore'); const toBeIgnored = [ '# System Files', @@ -25,5 +37,13 @@ const toBeIgnored = [ 'capacitor.config.json', ]; -fs.writeFileSync(file, toBeIgnored.join('\n')); -log.success('Updated the Gitignore file.'); +// Merge with app configuration +const gitignoreConfig = toBeIgnored.concat(config.git.addLinesToIgnoreFile) + +// Update .gitignore file +try { + fs.writeFileSync(file, gitignoreConfig.join('\n')); + log.success('Updated the .gitignore file.'); +} catch (e) { + log.error('Failed to update the .gitignore file.') +} diff --git a/templates/app/config.json b/templates/app/config.json index d9e18fae..ad0dd602 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -6,6 +6,26 @@ "appID": "de.scriptpilot.appframework", "language": "en" }, + "pwa": { + "includeOfflineServiceWorker": true + }, + "ios": { + + }, + "android": { + + }, + "eslint": { + + }, + "jest": { + + }, + "git": { + "addLinesToIgnoreFile": [] + }, + "debugMode": false, + "------------": "------------", "frontend": { "android": { "themeColor": "#2196f3", @@ -41,9 +61,5 @@ "pwa": true, "ios": false, "android": false - }, - "pwa": { - "includeOfflineServiceWorker": true - }, - "debugMode": false + } } From 497d38f9be7a1615a526d966bef610a9c1d9aabe Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 14:15:11 +0100 Subject: [PATCH 090/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 14d0927d..85e878ae 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.23", + "version": "3.0.0-alpha.24", "license": "MIT", "bin": { "app": "./cli/app.js" From 09bd28c0ee6616de5254b600aaa048a93b41530f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 14:18:27 +0100 Subject: [PATCH 091/243] added date in license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 15bc72f8..8c616cb5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 +Copyright (c) 2016-2019 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 800064a11a27d98ff55e1625474740ddca65d90d Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:06:25 +0100 Subject: [PATCH 092/243] version bump --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 2ab4c15e..69a06790 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.23", + "version": "3.0.0-alpha.24", "lockfileVersion": 1, "requires": true, "dependencies": { From 37d98639764e97997ba0e4a97052d7bd322408de Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:08:03 +0100 Subject: [PATCH 093/243] app config schema validation closes #837 , closes #754 --- package.json | 1 + scripts/test-app-config.js | 42 +++++++++ scripts/test.js | 6 +- templates/app-config-schema.json | 141 +++++++++++++++++++++++++++++++ templates/app/config.json | 64 +++++--------- 5 files changed, 210 insertions(+), 44 deletions(-) create mode 100644 scripts/test-app-config.js create mode 100644 templates/app-config-schema.json diff --git a/package.json b/package.json index 85e878ae..ebdef04e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@capacitor/core": "^1.0.0-beta.13", "@capacitor/ios": "^1.0.0-beta.13", "@vue/component-compiler-utils": "^2.4.0", + "ajv": "^6.6.2", "cli-color": "^1.4.0", "commander": "^2.19.0", "eslint": "^5.11.1", diff --git a/scripts/test-app-config.js b/scripts/test-app-config.js new file mode 100644 index 00000000..89b96be8 --- /dev/null +++ b/scripts/test-app-config.js @@ -0,0 +1,42 @@ +// Import modules +const Ajv = require('ajv'); +const fs = require('fs-extra'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +// Load schema +const schemaFile = path.templates('app-config-schema.json'); +let schema = null; +try { + schema = fs.readJsonSync(schemaFile); + log.success('Loaded app config schema.'); +} catch (e) { + log.error('Failed to load app config schema.'); +} + +// Load app configuration +const configFile = path.app('config.json'); +let config = null; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Do validation +const validate = (new Ajv({ format: 'full' })).compile(schema); +const valid = validate(config); +if (valid) { + log.success('Passed app/config.json file validation.'); +} else { + const errorReport = []; + validate.errors.forEach((error) => { + errorReport.push(` + Message: ${error.message} + Data Path: root${error.dataPath} + Parameters: ${JSON.stringify(error.params)} + `); + }); + log.error(`Failed app/config.json file validation.\n${errorReport.join('')}`); +} diff --git a/scripts/test.js b/scripts/test.js index 35f59668..2520d30a 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -3,13 +3,15 @@ const run = require('./helper/run'); const log = require('./helper/logger'); const path = require('./helper/path'); +if (run.script('test-app-config').code !== 0) process.exit(1); + const config = fs.readJsonSync(path.app('config.json')); -if (config.test.eslint.runOnTestCommand) { +if (config.eslint.runOnTestCommand) { if (run.script('test-eslint').code !== 0) process.exit(1); } -if (config.test.jest.runOnTestCommand) { +if (config.jest.runOnTestCommand) { if (run.script('test-jest').code !== 0) process.exit(1); } diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json new file mode 100644 index 00000000..77409f93 --- /dev/null +++ b/templates/app-config-schema.json @@ -0,0 +1,141 @@ +{ + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "appID": { + "type": "string" + }, + "language": { + "type": "string" + } + }, + "additionalProperties": false + }, + "pwa": { + "type": "object", + "properties": { + "buildOnBuildCommand": { + "type": "boolean" + }, + "includeOfflineServiceWorker": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ios": { + "type": "object", + "properties": { + "buildOnBuildCommand": { + "type": "boolean" + }, + "relatedITunesApplicationID": { + "type": "string" + } + }, + "additionalProperties": false + }, + "android": { + "type": "object", + "properties": { + "buildOnBuildCommand": { + "type": "boolean" + }, + "themeColor": { + "type": "string" + }, + "backgroundColor": { + "type": "string" + }, + "relatedPlayStoreApplicationID": { + "type": "string" + } + }, + "additionalProperties": false + }, + "eslint": { + "type": "object", + "properties": { + "runOnDevCommand": { + "type": "boolean" + }, + "runOnTestCommand": { + "type": "boolean" + }, + "runOnBuildCommand": { + "type": "boolean" + }, + "openReportWhenPassed": { + "type": "boolean" + }, + "openReportWhenFailed": { + "type": "boolean" + }, + "extendDefaultConfig": { + "type": "object" + } + }, + "additionalProperties": false + }, + "jest": { + "type": "object", + "properties": { + "runOnDevCommand": { + "type": "boolean" + }, + "runOnTestCommand": { + "type": "boolean" + }, + "runOnBuildCommand": { + "type": "boolean" + }, + "openReportWhenPassed": { + "type": "boolean" + }, + "openReportWhenFailed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "editorconfig": { + "type": "object", + "properties": { + "addLinesToConfigFile": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "git": { + "type": "object", + "properties": { + "addLinesToIgnoreFile": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "debugMode": { + "type": "boolean" + } + }, + "additionalProperties": false +} diff --git a/templates/app/config.json b/templates/app/config.json index ad0dd602..c4d8633b 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -7,59 +7,39 @@ "language": "en" }, "pwa": { + "buildOnBuildCommand": true, "includeOfflineServiceWorker": true }, "ios": { - + "buildOnBuildCommand": false, + "relatedITunesApplicationID": "1203927581" }, "android": { - + "buildOnBuildCommand": false, + "themeColor": "#2196f3", + "backgroundColor": "#ffffff", + "relatedPlayStoreApplicationID": "de.scriptpilot.appframework" }, "eslint": { - + "runOnDevCommand": false, + "runOnTestCommand": true, + "runOnBuildCommand": true, + "openReportWhenPassed": false, + "openReportWhenFailed": true, + "extendDefaultConfig": {} }, "jest": { - + "runOnDevCommand": false, + "runOnTestCommand": true, + "runOnBuildCommand": true, + "openReportWhenPassed": false, + "openReportWhenFailed": true + }, + "editorconfig": { + "addLinesToConfigFile": [] }, "git": { "addLinesToIgnoreFile": [] }, - "debugMode": false, - "------------": "------------", - "frontend": { - "android": { - "themeColor": "#2196f3", - "backgroundColor": "#ffffff", - "relatedPlayStoreApplicationID": "de.scriptpilot.appframework" - }, - "ios": { - "relatedITunesApplicationID": "1203927581" - } - }, - "backend": { - }, - "test": { - "eslint": { - "runOnTestCommand": true, - "runBeforeBuild": true, - "keepReportWhenPassed": true, - "ownConfig": {} - }, - "jest": { - "runOnTestCommand": true, - "runBeforeBuild": true, - "keepReportWhenPassed": true - } - }, - "development": { - "logLevel": "debug", - "editorConfig": { - "ownConfig": [] - } - }, - "build": { - "pwa": true, - "ios": false, - "android": false - } + "debugMode": false } From 621f2b389d38675b06320b256d933a1bc2a96936 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:08:18 +0100 Subject: [PATCH 094/243] run tests on build command --- scripts/dev.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/dev.js b/scripts/dev.js index 0fc394b2..f4656b2e 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -3,6 +3,20 @@ const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); +// Load app configuration +let config = {}; +try { + config = fs.readJsonSync(path.app('config.json')); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Run tests +if (run.script('test-app-config').code !== 0) process.exit(1); +if (config.eslint.runOnDevCommand && run.script('test-eslint').code !== 0) process.exit(1); +if (config.jest.runOnDevCommand && run.script('test-jest').code !== 0) process.exit(1); + // Define cache folder const cacheFolder = path.cache('dev'); From 4cbf0ebc64816b21347e88a4c0b77856139c84cc Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:08:41 +0100 Subject: [PATCH 095/243] make config self-explaning closes #837 --- scripts/build.js | 17 ++++++++++------- scripts/test-eslint.js | 8 ++++++-- scripts/test-jest.js | 8 ++++++-- scripts/update-editor-config.js | 30 +++++++++++++++++++++++------- scripts/update-eslint-config.js | 28 ++++++++++++++++++++++------ scripts/update-gitignore-config.js | 4 ++-- scripts/update-index-file.js | 4 ++-- scripts/update-manifest-file.js | 6 +++--- 8 files changed, 74 insertions(+), 31 deletions(-) diff --git a/scripts/build.js b/scripts/build.js index 2c79f6c0..1672effa 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -14,24 +14,27 @@ try { } // No build targets configured warning -if (!config.build.pwa && !config.build.ios && !config.build.android) { +if (!config.pwa.buildOnBuildCommand + && !config.ios.buildOnBuildCommand + && !config.android.buildOnBuildCommand) { log.warning('Build disabled in configuration for PWA, iOS and Android.'); process.exit(0); } // Define scripts to run const scripts = []; -if (config.test.eslint.runBeforeBuild) scripts.push('test-eslint'); -if (config.test.jest.runBeforeBuild) scripts.push('test-jest'); +scripts.push('test-app-config'); +if (config.eslint.runOnBuildCommand) scripts.push('test-eslint'); +if (config.jest.runOnBuildCommand) scripts.push('test-jest'); scripts.push('build-icons'); scripts.push('build-web'); -if (config.build.ios || config.build.android) { +if (config.ios.buildOnBuildCommand || config.android.buildOnBuildCommand) { scripts.push('install-capacitor'); scripts.push('update-capacitor-config'); } -if (config.build.pwa) scripts.push('build-pwa'); -if (config.build.ios) scripts.push('build-ios'); -if (config.build.android) scripts.push('build-android'); +if (config.pwa.buildOnBuildCommand) scripts.push('build-pwa'); +if (config.ios.buildOnBuildCommand) scripts.push('build-ios'); +if (config.android.buildOnBuildCommand) scripts.push('build-android'); // Run scripts const runNextScript = () => { diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index 7a757f67..af2e0743 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -28,13 +28,17 @@ const scriptResult = run.silent(` --cache-location "${cacheFile}" `.replace(/\n/g, ' ')); if (scriptResult.code === 0) { - if (appConfig.test.eslint.keepReportWhenPassed) { + if (appConfig.eslint.openReportWhenPassed) { opn(logFile, { wait: false }); } else { fs.remove(logFile); } log.success('Passed ESLint test.'); } else { - opn(logFile, { wait: false }); + if (appConfig.eslint.openReportWhenFailed) { + opn(logFile, { wait: false }); + } else { + fs.remove(logFile); + } log.error(`Failed ESLint test. Please open ${logFileName} for details.`); } diff --git a/scripts/test-jest.js b/scripts/test-jest.js index 0573b8f8..f4c280fd 100644 --- a/scripts/test-jest.js +++ b/scripts/test-jest.js @@ -14,7 +14,7 @@ const appConfig = fs.readJsonSync(appConfigFile); const scriptResult = run.silent(`npx jest --config "${jestConfigFile}"`); if (scriptResult.code === 0) { log.success('Passed Jest tests.'); - if (appConfig.test.jest.keepReportWhenPassed) { + if (appConfig.jest.openReportWhenPassed) { opn(logFile, { wait: false }); } else { fs.remove(logFile); @@ -23,6 +23,10 @@ if (scriptResult.code === 0) { log.info('Skipped Jest tests, no specs found.'); fs.remove(logFile); } else { - opn(logFile, { wait: false }); + if (appConfig.jest.openReportWhenFailed) { + opn(logFile, { wait: false }); + } else { + fs.remove(logFile); + } log.error(`Failed Jest tests. Please open ${logFileName} for details.`); } diff --git a/scripts/update-editor-config.js b/scripts/update-editor-config.js index d60769f5..d8088c2d 100644 --- a/scripts/update-editor-config.js +++ b/scripts/update-editor-config.js @@ -1,8 +1,21 @@ +// Import modules const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -const defaultConfig = [ +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Default value +const editorConfigFile = path.project('.editorconfig'); +const editorDefaultConfig = [ '[*]', 'charset = utf-8', 'end_of_line = lf', @@ -12,10 +25,13 @@ const defaultConfig = [ 'max_line_length = 100', ]; -const userConfig = fs.readJsonSync(path.app('config.json')).development.editorConfig.ownConfig; - -const mergedConfig = defaultConfig.concat(userConfig); +// Merge with app configuration +const editorConfig = editorDefaultConfig.concat(config.editorconfig.addLinesToConfigFile); -const file = path.project('.editorconfig'); -fs.writeFileSync(file, `${mergedConfig.join('\n')}\n`); -log.success('Updated the Editor config file.'); +// Update .editorconfig file +try { + fs.writeFileSync(editorConfigFile, editorConfig.join('\n')); + log.success('Updated the .editorconfig file.'); +} catch (e) { + log.error('Failed to update the .editorconfig file.'); +} diff --git a/scripts/update-eslint-config.js b/scripts/update-eslint-config.js index bea7b5f8..e43cfe66 100644 --- a/scripts/update-eslint-config.js +++ b/scripts/update-eslint-config.js @@ -1,8 +1,21 @@ +// Import modules const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); const merge = require('./helper/merge'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Set default values +const eslintConfigFile = path.project('.eslintrc.json'); const defaultConfig = { extends: [ 'airbnb-base', @@ -11,10 +24,13 @@ const defaultConfig = { ], }; -const userConfig = fs.readJsonSync(path.app('config.json')).test.eslint.ownConfig; - -const mergedConfig = merge(defaultConfig, userConfig); +// Merge default with app config +const eslintConfig = merge(defaultConfig, config.eslint.extendDefaultConfig); -const file = path.project('.eslintrc.json'); -fs.writeJsonSync(file, mergedConfig, { spaces: 2 }); -log.success('Updated the ESLint config file.'); +// Update .eslintrc.json file +try { + fs.writeJsonSync(eslintConfigFile, eslintConfig, { spaces: 2 }); + log.success('Updated the .eslintrc.json file.'); +} catch (e) { + log.error('Failed to update the .eslintrc.json file.'); +} diff --git a/scripts/update-gitignore-config.js b/scripts/update-gitignore-config.js index 7287be39..3974197e 100644 --- a/scripts/update-gitignore-config.js +++ b/scripts/update-gitignore-config.js @@ -38,12 +38,12 @@ const toBeIgnored = [ ]; // Merge with app configuration -const gitignoreConfig = toBeIgnored.concat(config.git.addLinesToIgnoreFile) +const gitignoreConfig = toBeIgnored.concat(config.git.addLinesToIgnoreFile); // Update .gitignore file try { fs.writeFileSync(file, gitignoreConfig.join('\n')); log.success('Updated the .gitignore file.'); } catch (e) { - log.error('Failed to update the .gitignore file.') + log.error('Failed to update the .gitignore file.'); } diff --git a/scripts/update-index-file.js b/scripts/update-index-file.js index 743a1b33..9d9659c4 100644 --- a/scripts/update-index-file.js +++ b/scripts/update-index-file.js @@ -26,10 +26,10 @@ try { // Replace variables in index file const variables = { language: config.meta.language, - androidThemeColor: config.frontend.android.themeColor, + androidThemeColor: config.android.themeColor, description: config.meta.description, name: config.meta.name, - relatedITunesApplicationID: config.frontend.ios.relatedITunesApplicationID, + relatedITunesApplicationID: config.ios.relatedITunesApplicationID, }; let indexFileContent = templateFileContent; Object.keys(variables).forEach((key) => { diff --git a/scripts/update-manifest-file.js b/scripts/update-manifest-file.js index 5a3f0547..fcef9300 100644 --- a/scripts/update-manifest-file.js +++ b/scripts/update-manifest-file.js @@ -28,9 +28,9 @@ const variables = { name: config.meta.name, shortName: config.meta.shortName, description: config.meta.description, - androidBackgroundColor: config.frontend.android.backgroundColor, - androidThemeColor: config.frontend.android.themeColor, - relatedPlayStoreApplicationID: config.frontend.android.relatedPlayStoreApplicationID, + androidBackgroundColor: config.android.backgroundColor, + androidThemeColor: config.android.themeColor, + relatedPlayStoreApplicationID: config.android.relatedPlayStoreApplicationID, }; let manifestFileContent = templateFileContent; Object.keys(variables).forEach((key) => { From dbe289625474347cfb69448d42e1923db205d0a3 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:09:56 +0100 Subject: [PATCH 096/243] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ebdef04e..d616ef1c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.24", + "version": "3.0.0-alpha.25", "license": "MIT", "bin": { "app": "./cli/app.js" From 1b4248b288b9a9b3d676906a01d039f03526f9aa Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:53:23 +0100 Subject: [PATCH 097/243] check development mode / proper installation closes #717 --- cli/app.js | 23 +++++++++++++++++++++++ templates/app-config-schema.json | 3 +++ templates/app/config.json | 3 ++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/cli/app.js b/cli/app.js index 08620d4e..cf752c6e 100755 --- a/cli/app.js +++ b/cli/app.js @@ -1,8 +1,31 @@ #!/usr/bin/env node +// Import modules const program = require('commander'); +const fs = require('fs-extra') +const log = require('../scripts/helper/logger') +const path = require('../scripts/helper/path') const { version } = require('../package.json'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Check if App Framework is installed or if developmentMode is enabled +if (path.project() === path.framework() && config.developmentMode === false) { + log.error(` + App Framework should be installed from NPMjs.com. + To contribute to App Frameworkwork itself, please activate the development mode. + Please check the documenttaion for the next steps. + `) +} + +// CLI definition program .version(version, '-v --version') .command('test', 'run one or more tests') diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index 77409f93..b4ae9caa 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -135,6 +135,9 @@ }, "debugMode": { "type": "boolean" + }, + "developmentMode": { + "type": "boolean" } }, "additionalProperties": false diff --git a/templates/app/config.json b/templates/app/config.json index c4d8633b..09220be8 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -41,5 +41,6 @@ "git": { "addLinesToIgnoreFile": [] }, - "debugMode": false + "debugMode": false, + "developmentMode": false } From 12d1d97ad33d934f35e46235dc8089e3c3b8f9d2 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 20:53:39 +0100 Subject: [PATCH 098/243] version bump and Framework7 update --- package-lock.json | 14 +++++++------- package.json | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69a06790..4ac2e86e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.24", + "version": "3.0.0-alpha.28", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4700,9 +4700,9 @@ } }, "framework7": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/framework7/-/framework7-3.6.3.tgz", - "integrity": "sha512-c67Ii69+wrqOxy17nHtbawNLzj/meclyWfui+XOhhv5A0vstDc2sooaJDREYZixIOAqtcYl4AL2dCyx9uRHEAQ==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/framework7/-/framework7-3.6.5.tgz", + "integrity": "sha512-bKIeIepeumIZM75rFhuk6DSr9yqi+05EPbpkyKHZLFOdNFfhbEW1wr0PYpjVrMuuxO3iK9frhiUx982QhlhPqA==", "requires": { "dom7": "^2.1.2", "path-to-regexp": "^2.4.0", @@ -4711,9 +4711,9 @@ } }, "framework7-vue": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/framework7-vue/-/framework7-vue-3.6.3.tgz", - "integrity": "sha512-8YDT7YEefZ+x/VHpu7XLL0dRWI9y06K356/3i+i3atPDFo8FQDj05KVZNP0aqeehRgi0OCX5JxkIGF2Ij2Tstw==" + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/framework7-vue/-/framework7-vue-3.6.5.tgz", + "integrity": "sha512-vEvLKOZQaZfiRkNtTl12Eu8QCMLewRsJt10beb32157SdmS6E7VAKurGRC+8DrEnwhvfnStQVMWOTLCw90VF+Q==" }, "fresh": { "version": "0.5.2", diff --git a/package.json b/package.json index d616ef1c..8df522e0 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.25", + "version": "3.0.0-alpha.29", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -26,8 +26,8 @@ "eslint-plugin-jest": "^22.1.2", "eslint-plugin-vue": "^5.1.0", "find": "^0.2.9", - "framework7": "^3.6.3", - "framework7-vue": "^3.6.3", + "framework7": "^3.6.5", + "framework7-vue": "^3.6.5", "fs-extra": "^7.0.1", "jest": "^23.6.0", "jest-html-reporter": "^2.4.2", From 914295e72a939153e81379605a9fe8f5956766c4 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 21:51:55 +0100 Subject: [PATCH 099/243] eslint fix --- cli/app.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/app.js b/cli/app.js index cf752c6e..41b39ff0 100755 --- a/cli/app.js +++ b/cli/app.js @@ -2,9 +2,9 @@ // Import modules const program = require('commander'); -const fs = require('fs-extra') -const log = require('../scripts/helper/logger') -const path = require('../scripts/helper/path') +const fs = require('fs-extra'); +const log = require('../scripts/helper/logger'); +const path = require('../scripts/helper/path'); const { version } = require('../package.json'); // Load app configuration @@ -22,7 +22,7 @@ if (path.project() === path.framework() && config.developmentMode === false) { App Framework should be installed from NPMjs.com. To contribute to App Frameworkwork itself, please activate the development mode. Please check the documenttaion for the next steps. - `) + `); } // CLI definition From 86ea56941091b5cbb3beefc088ef43decf5ca7fa Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 21:56:32 +0100 Subject: [PATCH 100/243] align logging --- scripts/helper/logger.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 32beedb7..2feba440 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -20,7 +20,7 @@ module.exports = { } }, info(msg) { - console.log(clc.bold.blue('[INFO]'), clc.bold(msg)); // eslint-disable-line no-console + console.log(clc.bold.blue(' [INFO]'), clc.bold(msg)); // eslint-disable-line no-console }, success(msg) { console.log(clc.bold.green('[SUCCESS]'), clc.bold(msg)); // eslint-disable-line no-console @@ -29,7 +29,7 @@ module.exports = { console.log(clc.bold.yellow('[WARNING]'), clc.bold(msg)); // eslint-disable-line no-console }, error(msg) { - console.log(clc.bold.red('[ERROR]'), clc.bold(msg)); // eslint-disable-line no-console + console.log(clc.bold.red(' [ERROR]'), clc.bold(msg)); // eslint-disable-line no-console process.exit(1); }, reset() { From d1e6098077cfdac0c000da307d563c944472b926 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 22:01:30 +0100 Subject: [PATCH 101/243] make Xcode / Android Studio opening configurable --- scripts/build-android.js | 12 +++++++++++- scripts/build-ios.js | 12 +++++++++++- templates/app-config-schema.json | 6 ++++++ templates/app/config.json | 2 ++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/scripts/build-android.js b/scripts/build-android.js index 86bd5351..24b39963 100644 --- a/scripts/build-android.js +++ b/scripts/build-android.js @@ -4,6 +4,16 @@ const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + // Add Android project folder const androidProjectFolder = path.project('android'); if (fs.pathExistsSync(androidProjectFolder)) { @@ -22,4 +32,4 @@ if (updateScript.code === 0) log.success('Updated the Android project folder.'); else log.error('Failed to update the Android project folder.'); // Open Xcode -run.silent('npx cap open android'); +if (config.android.openAndroidStudioAfterBuild) run.silent('npx cap open android'); diff --git a/scripts/build-ios.js b/scripts/build-ios.js index 82d4dcd4..d0cd59d0 100644 --- a/scripts/build-ios.js +++ b/scripts/build-ios.js @@ -4,6 +4,16 @@ const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + // Add iOS project folder const iosProjectFolder = path.project('ios'); if (fs.pathExistsSync(iosProjectFolder)) { @@ -22,4 +32,4 @@ if (updateScript.code === 0) log.success('Updated the iOS project folder.'); else log.error('Failed to update the iOS project folder.'); // Open Xcode -run.silent('npx cap open ios'); +if (config.ios.openXcodeAfterBuild) run.silent('npx cap open ios'); diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index b4ae9caa..c16ff786 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -40,6 +40,9 @@ "buildOnBuildCommand": { "type": "boolean" }, + "openXcodeAfterBuild": { + "type": "boolean" + }, "relatedITunesApplicationID": { "type": "string" } @@ -52,6 +55,9 @@ "buildOnBuildCommand": { "type": "boolean" }, + "openAndroidStudioAfterBuild": { + "type": "boolean" + }, "themeColor": { "type": "string" }, diff --git a/templates/app/config.json b/templates/app/config.json index 09220be8..cc47cb8f 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -12,10 +12,12 @@ }, "ios": { "buildOnBuildCommand": false, + "openXcodeAfterBuild": true, "relatedITunesApplicationID": "1203927581" }, "android": { "buildOnBuildCommand": false, + "openAndroidStudioAfterBuild": true, "themeColor": "#2196f3", "backgroundColor": "#ffffff", "relatedPlayStoreApplicationID": "de.scriptpilot.appframework" From 906ed327413ac867d875e872abd688402820760e Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 22:10:58 +0100 Subject: [PATCH 102/243] use file to check development mode --- cli/app.js | 8 ++++---- scripts/update-gitignore-config.js | 1 + templates/app-config-schema.json | 3 --- templates/app/config.json | 3 +-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/cli/app.js b/cli/app.js index 41b39ff0..770dcce4 100755 --- a/cli/app.js +++ b/cli/app.js @@ -16,12 +16,12 @@ try { log.error('Failed to load app config file.'); } -// Check if App Framework is installed or if developmentMode is enabled -if (path.project() === path.framework() && config.developmentMode === false) { +// Check if App Framework was cloned and no .enableDevelopmentMode file exists +if (path.project() === path.framework() && !fs.pathExistsSync(path.project('.enableDevelopmentMode'))) { log.error(` - App Framework should be installed from NPMjs.com. + App Framework should be installed as a Node package - not beeing cloned. To contribute to App Frameworkwork itself, please activate the development mode. - Please check the documenttaion for the next steps. + Please read the documentation for details. `); } diff --git a/scripts/update-gitignore-config.js b/scripts/update-gitignore-config.js index 3974197e..16f0198a 100644 --- a/scripts/update-gitignore-config.js +++ b/scripts/update-gitignore-config.js @@ -31,6 +31,7 @@ const toBeIgnored = [ 'node_modules/', '*.tgz', '.editorconfig', + '.enableDevelopmentMode', '.eslintrc.json', '.gitignore', '.jestconfig.json', diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index c16ff786..dc668987 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -141,9 +141,6 @@ }, "debugMode": { "type": "boolean" - }, - "developmentMode": { - "type": "boolean" } }, "additionalProperties": false diff --git a/templates/app/config.json b/templates/app/config.json index cc47cb8f..ddf3394c 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -43,6 +43,5 @@ "git": { "addLinesToIgnoreFile": [] }, - "debugMode": false, - "developmentMode": false + "debugMode": false } From 2d0ac60605d9bbb40ab334febeb4931d011b5c47 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Fri, 4 Jan 2019 22:11:08 +0100 Subject: [PATCH 103/243] update eslint, version bump --- package-lock.json | 58 ++++++++++++++++++++++++----------------------- package.json | 4 ++-- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4ac2e86e..1e44a9ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.28", + "version": "3.0.0-alpha.30", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2519,18 +2519,10 @@ } } }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "requires": { - "callsites": "^0.2.0" - } - }, "callsites": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==" }, "camelcase": { "version": "5.0.0", @@ -3836,9 +3828,9 @@ } }, "eslint": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", - "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz", + "integrity": "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==", "requires": { "@babel/code-frame": "^7.0.0", "ajv": "^6.5.3", @@ -3857,6 +3849,7 @@ "glob": "^7.1.2", "globals": "^11.7.0", "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.1.0", "js-yaml": "^3.12.0", @@ -3871,12 +3864,22 @@ "pluralize": "^7.0.0", "progress": "^2.0.0", "regexpp": "^2.0.1", - "require-uncached": "^1.0.3", "semver": "^5.5.1", "strip-ansi": "^4.0.0", "strip-json-comments": "^2.0.1", "table": "^5.0.2", "text-table": "^0.2.0" + }, + "dependencies": { + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + } } }, "eslint-config-airbnb-base": { @@ -8747,6 +8750,14 @@ "workbox-build": "^3.4.1" } }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.1", "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", @@ -10918,15 +10929,6 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, - "require-uncached": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, "resolve": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", @@ -10951,9 +10953,9 @@ } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "resolve-url": { "version": "0.2.1", diff --git a/package.json b/package.json index 8df522e0..c2ed6d58 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.29", + "version": "3.0.0-alpha.30", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -20,7 +20,7 @@ "ajv": "^6.6.2", "cli-color": "^1.4.0", "commander": "^2.19.0", - "eslint": "^5.11.1", + "eslint": "^5.12.0", "eslint-config-airbnb-base": "^13.1.0", "eslint-plugin-import": "^2.14.0", "eslint-plugin-jest": "^22.1.2", From 9f65c1bb65a2eb8590ecc6bd9a2446cfcb8e8917 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 13:10:42 +0100 Subject: [PATCH 104/243] eslint fixes --- cli/app.js | 9 --------- scripts/test-jest.js | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/cli/app.js b/cli/app.js index 770dcce4..21984904 100755 --- a/cli/app.js +++ b/cli/app.js @@ -7,15 +7,6 @@ const log = require('../scripts/helper/logger'); const path = require('../scripts/helper/path'); const { version } = require('../package.json'); -// Load app configuration -const configFile = path.app('config.json'); -let config = {}; -try { - config = fs.readJsonSync(configFile); -} catch (e) { - log.error('Failed to load app config file.'); -} - // Check if App Framework was cloned and no .enableDevelopmentMode file exists if (path.project() === path.framework() && !fs.pathExistsSync(path.project('.enableDevelopmentMode'))) { log.error(` diff --git a/scripts/test-jest.js b/scripts/test-jest.js index f4c280fd..4fccc54b 100644 --- a/scripts/test-jest.js +++ b/scripts/test-jest.js @@ -13,12 +13,12 @@ const appConfig = fs.readJsonSync(appConfigFile); const scriptResult = run.silent(`npx jest --config "${jestConfigFile}"`); if (scriptResult.code === 0) { - log.success('Passed Jest tests.'); if (appConfig.jest.openReportWhenPassed) { opn(logFile, { wait: false }); } else { fs.remove(logFile); } + log.success('Passed Jest tests.'); } else if (scriptResult.search(/No tests found/) !== -1) { log.info('Skipped Jest tests, no specs found.'); fs.remove(logFile); From 50e6d6bc2b7f51aa277d28b0a0f71015b41682b6 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 13:12:22 +0100 Subject: [PATCH 105/243] create config file initially from schema closes #857 --- scripts/create-app-folder.js | 7 +++ scripts/helper/json.js | 31 +++++++++++ scripts/helper/json.spec.js | 71 ++++++++++++++++++++++++ templates/app-config-schema.json | 95 +++++++++++++++++++++----------- templates/app/config.json | 6 +- 5 files changed, 174 insertions(+), 36 deletions(-) create mode 100644 scripts/helper/json.js create mode 100644 scripts/helper/json.spec.js diff --git a/scripts/create-app-folder.js b/scripts/create-app-folder.js index a7a6e921..8e4ff9fa 100644 --- a/scripts/create-app-folder.js +++ b/scripts/create-app-folder.js @@ -1,6 +1,7 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); +const json = require('./helper/json') const sourceFolder = path.templates('app'); const destFolder = path.app(); @@ -10,6 +11,12 @@ if (path.project() === path.framework()) { } else if (fs.pathExistsSync(destFolder)) { log.info('Found app folder.'); } else { + // Copy files fs.copySync(sourceFolder, destFolder); + // Reset app config file from schema with default values + const schema = fs.readJsonSync(path.templates('app-config-schema.json')) + const config = json.create(schema) + fs.outputJsonSync(path.app('config.json'), config, { spaces: 2 }) + // Log success log.success('Created app folder.'); } diff --git a/scripts/helper/json.js b/scripts/helper/json.js new file mode 100644 index 00000000..df315e97 --- /dev/null +++ b/scripts/helper/json.js @@ -0,0 +1,31 @@ +const create = (schema, path = ['root']) => { + if (schema.type === 'string') { + return schema.default !== undefined ? schema.default : ''; + } if (schema.type === 'number') { + return schema.default !== undefined ? schema.default : 0; + } if (schema.type === 'object') { + if (typeof schema.properties === 'object' && schema.properties !== null) { + const returnObject = {}; + Object.keys(schema.properties).forEach((key) => { + returnObject[key] = create(schema.properties[key], [...path, key]); + }); + return returnObject; + } else { + return schema.default !== undefined ? schema.default : {}; + } + } else if (schema.type === 'array') { + return schema.default !== undefined ? schema.default : []; + } else if (schema.type === 'boolean') { + return schema.default !== undefined ? schema.default : true; + } else if (schema.type === 'null') { + return null; + } else { + throw new Error('Unknown type in schema.'); + } +}; + +module.exports = { + create(schema) { + return create(schema); + } +}; diff --git a/scripts/helper/json.spec.js b/scripts/helper/json.spec.js new file mode 100644 index 00000000..83bceb0c --- /dev/null +++ b/scripts/helper/json.spec.js @@ -0,0 +1,71 @@ +const json = require('./json') + +describe('scripts/helper/json.js', () => { + // Exported object + test('should export object', () => { + expect(typeof json).toBe('object') + expect(typeof json).not.toBe(null) + }) + describe('exported object', () => { + // create() function + test('should contain create() function', () => { + expect(typeof json.create).toBe('function') + }) + describe('create() function', () => { + test('should handle type "string" correctly', () => { + expect(json.create({type: 'string'})).toBe('') + expect(json.create({type: 'string', default: 'Text'})).toBe('Text') + }) + test('should handle type "number" correctly', () => { + expect(json.create({type: 'number'})).toBe(0) + expect(json.create({type: 'number', default: 123})).toBe(123) + }) + test('should handle type "object" correctly', () => { + const obj1 = {type: 'object', properties: {}} + const obj2 = { + type: 'object', + properties: { + 'string': { + type: 'string' + }, + 'number': { + type: 'number' + } + } + } + const obj3 = { + type: 'object', + properties: { + 'object': { + type: 'object', + properties: { + 'string': { + type: 'string' + }, + 'number': { + type: 'number' + } + } + } + } + } + expect(json.create({type:'object'})).toEqual({}) + expect(json.create(obj1)).toEqual({}) + expect(json.create(obj2)).toEqual({string: '', number: 0}) + expect(json.create(obj3)).toEqual({object: {string: '', number: 0}}) + }); + test('should handle type "array" correctly', () => { + expect(json.create({type: 'array'})).toEqual([]) + expect(json.create({type: 'array', default: [1, 2, 3]})).toEqual([1, 2, 3]) + }) + test('should handle type "boolean" correctly', () => { + expect(json.create({type: 'boolean'})).toBe(true) + expect(json.create({type: 'boolean', default: true})).toBe(true) + expect(json.create({type: 'boolean', default: false})).toBe(false) + }) + test('should handle type "null" correctly', () => { + expect(json.create({type: 'null'})).toBe(null) + }) + }) + }) +}) diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index dc668987..1d784249 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -5,19 +5,24 @@ "type": "object", "properties": { "name": { - "type": "string" + "type": "string", + "default": "Your Application Name" }, "shortName": { - "type": "string" + "type": "string", + "default": "App Name" }, "description": { - "type": "string" + "type": "string", + "default": "Description of your application." }, "appID": { - "type": "string" + "type": "string", + "default": "" }, "language": { - "type": "string" + "type": "string", + "default": "en" } }, "additionalProperties": false @@ -26,10 +31,12 @@ "type": "object", "properties": { "buildOnBuildCommand": { - "type": "boolean" + "type": "boolean", + "default": true }, "includeOfflineServiceWorker": { - "type": "boolean" + "type": "boolean", + "default": true } }, "additionalProperties": false @@ -38,13 +45,16 @@ "type": "object", "properties": { "buildOnBuildCommand": { - "type": "boolean" + "type": "boolean", + "default": false }, "openXcodeAfterBuild": { - "type": "boolean" + "type": "boolean", + "default": true }, "relatedITunesApplicationID": { - "type": "string" + "type": "string", + "default": "" } }, "additionalProperties": false @@ -53,19 +63,24 @@ "type": "object", "properties": { "buildOnBuildCommand": { - "type": "boolean" + "type": "boolean", + "default": false }, "openAndroidStudioAfterBuild": { - "type": "boolean" + "type": "boolean", + "default": true }, "themeColor": { - "type": "string" + "type": "string", + "default": "#2196f3" }, "backgroundColor": { - "type": "string" + "type": "string", + "default": "#2196f3" }, "relatedPlayStoreApplicationID": { - "type": "string" + "type": "string", + "default": "" } }, "additionalProperties": false @@ -73,23 +88,29 @@ "eslint": { "type": "object", "properties": { - "runOnDevCommand": { - "type": "boolean" - }, "runOnTestCommand": { - "type": "boolean" + "type": "boolean", + "default": true + }, + "runOnDevCommand": { + "type": "boolean", + "default": true }, "runOnBuildCommand": { - "type": "boolean" + "type": "boolean", + "default": true }, "openReportWhenPassed": { - "type": "boolean" + "type": "boolean", + "default": false }, "openReportWhenFailed": { - "type": "boolean" + "type": "boolean", + "default": true }, "extendDefaultConfig": { - "type": "object" + "type": "object", + "default": {} } }, "additionalProperties": false @@ -97,20 +118,25 @@ "jest": { "type": "object", "properties": { - "runOnDevCommand": { - "type": "boolean" - }, "runOnTestCommand": { - "type": "boolean" + "type": "boolean", + "default": true + }, + "runOnDevCommand": { + "type": "boolean", + "default": true }, "runOnBuildCommand": { - "type": "boolean" + "type": "boolean", + "default": true }, "openReportWhenPassed": { - "type": "boolean" + "type": "boolean", + "default": false }, "openReportWhenFailed": { - "type": "boolean" + "type": "boolean", + "default": true } }, "additionalProperties": false @@ -122,7 +148,8 @@ "type": "array", "items": { "type": "string" - } + }, + "default": [] } }, "additionalProperties": false @@ -134,13 +161,15 @@ "type": "array", "items": { "type": "string" - } + }, + "default": [] } }, "additionalProperties": false }, "debugMode": { - "type": "boolean" + "type": "boolean", + "default": false } }, "additionalProperties": false diff --git a/templates/app/config.json b/templates/app/config.json index ddf3394c..25077771 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -23,18 +23,18 @@ "relatedPlayStoreApplicationID": "de.scriptpilot.appframework" }, "eslint": { - "runOnDevCommand": false, "runOnTestCommand": true, + "runOnDevCommand": true, "runOnBuildCommand": true, "openReportWhenPassed": false, "openReportWhenFailed": true, "extendDefaultConfig": {} }, "jest": { - "runOnDevCommand": false, "runOnTestCommand": true, + "runOnDevCommand": true, "runOnBuildCommand": true, - "openReportWhenPassed": false, + "openReportWhenPassed": true, "openReportWhenFailed": true }, "editorconfig": { From f2c79c6455ec472e9750b1cc12c05b6c88ac7e6d Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 19:34:46 +0100 Subject: [PATCH 106/243] app config fix --- package-lock.json | 7 +- package.json | 4 +- scripts/build.js | 2 +- scripts/create-app-folder.js | 7 -- scripts/dev.js | 2 +- .../{test-app-config.js => fix-app-config.js} | 28 ++++---- scripts/helper/json.js | 31 -------- scripts/helper/json.spec.js | 71 ------------------- scripts/test.js | 2 +- 9 files changed, 24 insertions(+), 130 deletions(-) rename scripts/{test-app-config.js => fix-app-config.js} (55%) delete mode 100644 scripts/helper/json.js delete mode 100644 scripts/helper/json.spec.js diff --git a/package-lock.json b/package-lock.json index 1e44a9ef..65ca7e13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.30", + "version": "3.0.0-alpha.31", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -7347,6 +7347,11 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, + "json-schema-fix": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/json-schema-fix/-/json-schema-fix-1.0.4.tgz", + "integrity": "sha512-JmavbBDXvHBD+P406EMRGw1sbkvgluq4IXmkqnadNNZ6lros/awIM+HVQgSD4Xg5NjNOtjPBJRVNCUf5AqFa+A==" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", diff --git a/package.json b/package.json index c2ed6d58..99263fd5 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.30", + "version": "3.0.0-alpha.31", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -17,7 +17,6 @@ "@capacitor/core": "^1.0.0-beta.13", "@capacitor/ios": "^1.0.0-beta.13", "@vue/component-compiler-utils": "^2.4.0", - "ajv": "^6.6.2", "cli-color": "^1.4.0", "commander": "^2.19.0", "eslint": "^5.12.0", @@ -32,6 +31,7 @@ "jest": "^23.6.0", "jest-html-reporter": "^2.4.2", "jimp": "^0.6.0", + "json-schema-fix": "^1.0.4", "opn": "^5.4.0", "parcel-bundler": "^1.11.0", "parcel-plugin-sw-cache": "^0.2.6", diff --git a/scripts/build.js b/scripts/build.js index 1672effa..ba043f7c 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -23,7 +23,7 @@ if (!config.pwa.buildOnBuildCommand // Define scripts to run const scripts = []; -scripts.push('test-app-config'); +scripts.push('fix-app-config'); if (config.eslint.runOnBuildCommand) scripts.push('test-eslint'); if (config.jest.runOnBuildCommand) scripts.push('test-jest'); scripts.push('build-icons'); diff --git a/scripts/create-app-folder.js b/scripts/create-app-folder.js index 8e4ff9fa..a7a6e921 100644 --- a/scripts/create-app-folder.js +++ b/scripts/create-app-folder.js @@ -1,7 +1,6 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -const json = require('./helper/json') const sourceFolder = path.templates('app'); const destFolder = path.app(); @@ -11,12 +10,6 @@ if (path.project() === path.framework()) { } else if (fs.pathExistsSync(destFolder)) { log.info('Found app folder.'); } else { - // Copy files fs.copySync(sourceFolder, destFolder); - // Reset app config file from schema with default values - const schema = fs.readJsonSync(path.templates('app-config-schema.json')) - const config = json.create(schema) - fs.outputJsonSync(path.app('config.json'), config, { spaces: 2 }) - // Log success log.success('Created app folder.'); } diff --git a/scripts/dev.js b/scripts/dev.js index f4656b2e..f8905dc6 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -13,7 +13,7 @@ try { } // Run tests -if (run.script('test-app-config').code !== 0) process.exit(1); +if (run.script('fix-app-config').code !== 0) process.exit(1); if (config.eslint.runOnDevCommand && run.script('test-eslint').code !== 0) process.exit(1); if (config.jest.runOnDevCommand && run.script('test-jest').code !== 0) process.exit(1); diff --git a/scripts/test-app-config.js b/scripts/fix-app-config.js similarity index 55% rename from scripts/test-app-config.js rename to scripts/fix-app-config.js index 89b96be8..cec74386 100644 --- a/scripts/test-app-config.js +++ b/scripts/fix-app-config.js @@ -1,6 +1,6 @@ // Import modules -const Ajv = require('ajv'); const fs = require('fs-extra'); +const json = require('json-schema-fix'); const log = require('./helper/logger'); const path = require('./helper/path'); @@ -24,19 +24,17 @@ try { log.error('Failed to load app config file.'); } -// Do validation -const validate = (new Ajv({ format: 'full' })).compile(schema); -const valid = validate(config); -if (valid) { - log.success('Passed app/config.json file validation.'); +// Do fix +const fixedConfig = json.fix(schema, config); + +// Update config file +if (JSON.stringify(fixedConfig) !== JSON.stringify(config)) { + try { + fs.outputJsonSync(configFile, fixedConfig, { spaces: 2 }); + log.success('Fixed app configuration file.'); + } catch (e) { + log.error('Failed to fix app configuration file.'); + } } else { - const errorReport = []; - validate.errors.forEach((error) => { - errorReport.push(` - Message: ${error.message} - Data Path: root${error.dataPath} - Parameters: ${JSON.stringify(error.params)} - `); - }); - log.error(`Failed app/config.json file validation.\n${errorReport.join('')}`); + log.info('Validated app configuration file.'); } diff --git a/scripts/helper/json.js b/scripts/helper/json.js deleted file mode 100644 index df315e97..00000000 --- a/scripts/helper/json.js +++ /dev/null @@ -1,31 +0,0 @@ -const create = (schema, path = ['root']) => { - if (schema.type === 'string') { - return schema.default !== undefined ? schema.default : ''; - } if (schema.type === 'number') { - return schema.default !== undefined ? schema.default : 0; - } if (schema.type === 'object') { - if (typeof schema.properties === 'object' && schema.properties !== null) { - const returnObject = {}; - Object.keys(schema.properties).forEach((key) => { - returnObject[key] = create(schema.properties[key], [...path, key]); - }); - return returnObject; - } else { - return schema.default !== undefined ? schema.default : {}; - } - } else if (schema.type === 'array') { - return schema.default !== undefined ? schema.default : []; - } else if (schema.type === 'boolean') { - return schema.default !== undefined ? schema.default : true; - } else if (schema.type === 'null') { - return null; - } else { - throw new Error('Unknown type in schema.'); - } -}; - -module.exports = { - create(schema) { - return create(schema); - } -}; diff --git a/scripts/helper/json.spec.js b/scripts/helper/json.spec.js deleted file mode 100644 index 83bceb0c..00000000 --- a/scripts/helper/json.spec.js +++ /dev/null @@ -1,71 +0,0 @@ -const json = require('./json') - -describe('scripts/helper/json.js', () => { - // Exported object - test('should export object', () => { - expect(typeof json).toBe('object') - expect(typeof json).not.toBe(null) - }) - describe('exported object', () => { - // create() function - test('should contain create() function', () => { - expect(typeof json.create).toBe('function') - }) - describe('create() function', () => { - test('should handle type "string" correctly', () => { - expect(json.create({type: 'string'})).toBe('') - expect(json.create({type: 'string', default: 'Text'})).toBe('Text') - }) - test('should handle type "number" correctly', () => { - expect(json.create({type: 'number'})).toBe(0) - expect(json.create({type: 'number', default: 123})).toBe(123) - }) - test('should handle type "object" correctly', () => { - const obj1 = {type: 'object', properties: {}} - const obj2 = { - type: 'object', - properties: { - 'string': { - type: 'string' - }, - 'number': { - type: 'number' - } - } - } - const obj3 = { - type: 'object', - properties: { - 'object': { - type: 'object', - properties: { - 'string': { - type: 'string' - }, - 'number': { - type: 'number' - } - } - } - } - } - expect(json.create({type:'object'})).toEqual({}) - expect(json.create(obj1)).toEqual({}) - expect(json.create(obj2)).toEqual({string: '', number: 0}) - expect(json.create(obj3)).toEqual({object: {string: '', number: 0}}) - }); - test('should handle type "array" correctly', () => { - expect(json.create({type: 'array'})).toEqual([]) - expect(json.create({type: 'array', default: [1, 2, 3]})).toEqual([1, 2, 3]) - }) - test('should handle type "boolean" correctly', () => { - expect(json.create({type: 'boolean'})).toBe(true) - expect(json.create({type: 'boolean', default: true})).toBe(true) - expect(json.create({type: 'boolean', default: false})).toBe(false) - }) - test('should handle type "null" correctly', () => { - expect(json.create({type: 'null'})).toBe(null) - }) - }) - }) -}) diff --git a/scripts/test.js b/scripts/test.js index 2520d30a..4e2c5750 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -3,7 +3,7 @@ const run = require('./helper/run'); const log = require('./helper/logger'); const path = require('./helper/path'); -if (run.script('test-app-config').code !== 0) process.exit(1); +if (run.script('fix-app-config').code !== 0) process.exit(1); const config = fs.readJsonSync(path.app('config.json')); From ef771f1dd2fc75f707e4ccdc6385439199d3ccfd Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 19:44:42 +0100 Subject: [PATCH 107/243] fix app config even is file is no valid json --- package.json | 2 +- scripts/fix-app-config.js | 3 +-- templates/app/config.json | 16 ++++++++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 99263fd5..e374134f 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.31", + "version": "3.0.0-alpha.32", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/fix-app-config.js b/scripts/fix-app-config.js index cec74386..2d57e96a 100644 --- a/scripts/fix-app-config.js +++ b/scripts/fix-app-config.js @@ -19,9 +19,8 @@ const configFile = path.app('config.json'); let config = null; try { config = fs.readJsonSync(configFile); - log.success('Loaded app config file.'); } catch (e) { - log.error('Failed to load app config file.'); + config = {}; } // Do fix diff --git a/templates/app/config.json b/templates/app/config.json index 25077771..3c9656ef 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -1,9 +1,9 @@ { "meta": { - "name": "My App", - "shortName": "My App", - "description": "Description of your new application.", - "appID": "de.scriptpilot.appframework", + "name": "Your Application Name", + "shortName": "App Name", + "description": "Description of your application.", + "appID": "", "language": "en" }, "pwa": { @@ -13,14 +13,14 @@ "ios": { "buildOnBuildCommand": false, "openXcodeAfterBuild": true, - "relatedITunesApplicationID": "1203927581" + "relatedITunesApplicationID": "" }, "android": { "buildOnBuildCommand": false, "openAndroidStudioAfterBuild": true, "themeColor": "#2196f3", - "backgroundColor": "#ffffff", - "relatedPlayStoreApplicationID": "de.scriptpilot.appframework" + "backgroundColor": "#2196f3", + "relatedPlayStoreApplicationID": "" }, "eslint": { "runOnTestCommand": true, @@ -34,7 +34,7 @@ "runOnTestCommand": true, "runOnDevCommand": true, "runOnBuildCommand": true, - "openReportWhenPassed": true, + "openReportWhenPassed": false, "openReportWhenFailed": true }, "editorconfig": { From f0b160cc3a0fd08f0d242a0934392e549def4990 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 20:05:01 +0100 Subject: [PATCH 108/243] fix app config fix run --- package.json | 2 +- scripts/fix-app-config.js | 3 +++ scripts/helper/logger.js | 8 ++++++-- scripts/helper/run.js | 8 ++++++-- scripts/postinstall.js | 1 + 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e374134f..caf657f4 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.32", + "version": "3.0.0-alpha.33", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/fix-app-config.js b/scripts/fix-app-config.js index 2d57e96a..771019e3 100644 --- a/scripts/fix-app-config.js +++ b/scripts/fix-app-config.js @@ -4,6 +4,9 @@ const json = require('json-schema-fix'); const log = require('./helper/logger'); const path = require('./helper/path'); +// Cancel if app folder not exists +if (!fs.pathExistsSync(path.app())) process.exit(0) + // Load schema const schemaFile = path.templates('app-config-schema.json'); let schema = null; diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 2feba440..10ee7735 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -4,8 +4,12 @@ const clc = require('cli-color'); const path = require('./path'); // Define debug mode -const configFile = path.app('config.json'); -const debugMode = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).debugMode : false; +let debugMode +try { + debugMode = fs.readJsonSync(path.app('config.json')).debugMode +} catch(e) { + debugMode = false +} // Export logger functions module.exports = { diff --git a/scripts/helper/run.js b/scripts/helper/run.js index 0033896e..f1b7d7d4 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -5,8 +5,12 @@ const log = require('./logger'); const path = require('./path'); // Define debug mode -const configFile = path.app('config.json'); -const debugMode = fs.pathExistsSync(configFile) ? fs.readJsonSync(configFile).debugMode : false; +let debugMode +try { + debugMode = fs.readJsonSync(path.app('config.json')).debugMode +} catch(e) { + debugMode = false +} // Export functions module.exports = { diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 38e5b95c..9656759b 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -2,6 +2,7 @@ const run = require('./helper/run'); const log = require('./helper/logger'); const scripts = [ + 'fix-app-config', 'create-app-folder', 'update-editor-config', 'update-gitignore-config', From 211783425708c31c2284c517d9f2d72f76c7dd40 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 22:26:23 +0100 Subject: [PATCH 109/243] eslint fix --- scripts/fix-app-config.js | 2 +- scripts/helper/logger.js | 8 ++++---- scripts/helper/run.js | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/fix-app-config.js b/scripts/fix-app-config.js index 771019e3..d002a228 100644 --- a/scripts/fix-app-config.js +++ b/scripts/fix-app-config.js @@ -5,7 +5,7 @@ const log = require('./helper/logger'); const path = require('./helper/path'); // Cancel if app folder not exists -if (!fs.pathExistsSync(path.app())) process.exit(0) +if (!fs.pathExistsSync(path.app())) process.exit(0); // Load schema const schemaFile = path.templates('app-config-schema.json'); diff --git a/scripts/helper/logger.js b/scripts/helper/logger.js index 10ee7735..3280c279 100644 --- a/scripts/helper/logger.js +++ b/scripts/helper/logger.js @@ -4,11 +4,11 @@ const clc = require('cli-color'); const path = require('./path'); // Define debug mode -let debugMode +let debugMode; try { - debugMode = fs.readJsonSync(path.app('config.json')).debugMode -} catch(e) { - debugMode = false + ({ debugMode } = fs.readJsonSync(path.app('config.json'))); +} catch (e) { + debugMode = false; } // Export logger functions diff --git a/scripts/helper/run.js b/scripts/helper/run.js index f1b7d7d4..931e54bd 100644 --- a/scripts/helper/run.js +++ b/scripts/helper/run.js @@ -5,11 +5,11 @@ const log = require('./logger'); const path = require('./path'); // Define debug mode -let debugMode +let debugMode; try { - debugMode = fs.readJsonSync(path.app('config.json')).debugMode -} catch(e) { - debugMode = false + ({ debugMode } = fs.readJsonSync(path.app('config.json'))); +} catch (e) { + debugMode = false; } // Export functions From ceb39cc4a5726c086d6cbef8bd25e64adc356188 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sat, 5 Jan 2019 22:26:44 +0100 Subject: [PATCH 110/243] ftp deployment closes #832 --- README.md | 1 + cli/app-deploy.js | 11 ++ cli/app.js | 1 + package-lock.json | 180 ++++++++++++++++++++++++++++++- package.json | 4 +- scripts/build-web.js | 1 + scripts/deploy-ftp.js | 73 +++++++++++++ templates/app-config-schema.json | 22 ++++ templates/app/config.json | 6 ++ 9 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 cli/app-deploy.js create mode 100644 scripts/deploy-ftp.js diff --git a/README.md b/README.md index 4f679adc..3a7f50d2 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ App Framework 3 is under development. **For production usage please use [App Fra - `npx app test` to run all configured tests - `npx app dev` to open application on development server - `npx app build` to build application to */build* folder +- `npx app deploy --ftp` to deploy the PWA to any FTP server ## Update diff --git a/cli/app-deploy.js b/cli/app-deploy.js new file mode 100644 index 00000000..ee5f55d4 --- /dev/null +++ b/cli/app-deploy.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +const program = require('commander'); +const { execSync } = require('child_process') +const path = require('../scripts/helper/path') + +program + .option('--ftp', 'deploy PWA to FTP server') + .parse(process.argv); + + if (program.ftp) execSync('node ./deploy-ftp.js', { cwd: path.scripts(), stdio: 'inherit' }) diff --git a/cli/app.js b/cli/app.js index 21984904..0da4984c 100755 --- a/cli/app.js +++ b/cli/app.js @@ -22,4 +22,5 @@ program .command('test', 'run one or more tests') .command('dev', 'start development server') .command('build', 'build application') + .command('deploy', 'deploy application') .parse(process.argv); diff --git a/package-lock.json b/package-lock.json index 65ca7e13..0b4fa969 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.31", + "version": "3.0.0-alpha.33", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -782,6 +782,38 @@ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.1.tgz", "integrity": "sha512-I2EjI9TbEFJNLziNPFfpo64PNanOaK17iL2kTW/jGlGOa4bvHw4VEied83kOEB7NJjXf1KfvmsQ2aEjy3xjiGg==" }, + "@icetee/ftp": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@icetee/ftp/-/ftp-0.3.15.tgz", + "integrity": "sha512-RxSa9VjcDWgWCYsaLdZItdCnJj7p4LxggaEk+Y3MP0dHKoxez8ioG07DVekVbZZqccsrL+oPB/N9AzVPxj4blg==", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "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=" + } + } + }, "@ionic/discover": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@ionic/discover/-/discover-0.3.3.tgz", @@ -3268,6 +3300,11 @@ "cssom": "0.3.x" } }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, "d": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -3353,6 +3390,11 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "deep-equal": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", + "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -4195,6 +4237,11 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, "falafel": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", @@ -5240,6 +5287,18 @@ } } }, + "ftp-deploy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ftp-deploy/-/ftp-deploy-2.3.0.tgz", + "integrity": "sha512-xdNTL/suh5BSxjuJr7/YCiZVqzTNmgUj6FN1Vesv4pTONo5YTBc/CdjZO3KvAVGawmQRn2Tlkoy3shcd0Mvlmw==", + "requires": { + "bluebird": "^3.5.1", + "minimatch": "3.0.4", + "promise-ftp": "^1.3.5", + "read": "^1.0.7", + "upath": "^1.0.5" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6073,6 +6132,11 @@ } } }, + "i": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", + "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -7888,6 +7952,11 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, + "ncp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", + "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=" + }, "netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", @@ -8949,6 +9018,11 @@ "find-up": "^1.0.0" } }, + "pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" + }, "plist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", @@ -10193,6 +10267,41 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "promise-ftp": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/promise-ftp/-/promise-ftp-1.3.5.tgz", + "integrity": "sha512-v368jPSqzmjjKDIyggulC+dRFcpAOEX7aFdEWkFYQp8Ao3P2N4Y6XnFFdKgK7PtkylwvGQkZR/65HZuzmq0V7A==", + "requires": { + "@icetee/ftp": "^0.3.15", + "bluebird": "2.x", + "promise-ftp-common": "^1.1.5" + }, + "dependencies": { + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" + } + } + }, + "promise-ftp-common": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/promise-ftp-common/-/promise-ftp-common-1.1.5.tgz", + "integrity": "sha1-tPgIKnQDVkdwNQZ2PtsUIw2YZdo=" + }, + "prompt": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz", + "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=", + "requires": { + "colors": "^1.1.2", + "pkginfo": "0.x.x", + "read": "1.0.x", + "revalidator": "0.1.x", + "utile": "0.3.x", + "winston": "2.1.x" + } + }, "prompts": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", @@ -10380,6 +10489,14 @@ } } }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "requires": { + "mute-stream": "~0.0.4" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -10981,6 +11098,11 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -11797,6 +11919,11 @@ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", @@ -12697,6 +12824,26 @@ "object.getownpropertydescriptors": "^2.0.3" } }, + "utile": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", + "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=", + "requires": { + "async": "~0.9.0", + "deep-equal": "~0.2.1", + "i": "0.3.x", + "mkdirp": "0.x.x", + "ncp": "1.0.x", + "rimraf": "2.x.x" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + } + } + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -12893,6 +13040,37 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "winston": { + "version": "2.1.1", + "resolved": "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz", + "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + } + } + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index caf657f4..0572c489 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.33", + "version": "3.0.0-alpha.34", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -28,6 +28,7 @@ "framework7": "^3.6.5", "framework7-vue": "^3.6.5", "fs-extra": "^7.0.1", + "ftp-deploy": "^2.3.0", "jest": "^23.6.0", "jest-html-reporter": "^2.4.2", "jimp": "^0.6.0", @@ -35,6 +36,7 @@ "opn": "^5.4.0", "parcel-bundler": "^1.11.0", "parcel-plugin-sw-cache": "^0.2.6", + "prompt": "^1.0.0", "shelljs": "^0.8.3", "vue": "^2.5.21", "vue-hot-reload-api": "^2.3.1", diff --git a/scripts/build-web.js b/scripts/build-web.js index 3c75ca47..478357a7 100644 --- a/scripts/build-web.js +++ b/scripts/build-web.js @@ -26,6 +26,7 @@ const parcelCacheFolder = path.cache('parcel'); log.warning('Building web files - this may take a while ...'); const webFilesBuild = run.silent(` npx parcel build "${path.cache('index.html')}" + --public-url . --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --no-source-maps diff --git a/scripts/deploy-ftp.js b/scripts/deploy-ftp.js new file mode 100644 index 00000000..98868d80 --- /dev/null +++ b/scripts/deploy-ftp.js @@ -0,0 +1,73 @@ +// Load modules +const fs = require('fs-extra'); +const prompt = require('prompt'); +const FTP = require('ftp-deploy'); +const path = require('./helper/path'); +const log = require('./helper/logger'); + +// Check if PWA was build before +const pwaFolder = path.project('pwa'); +if (!fs.pathExistsSync(pwaFolder)) { + log.error('Folder /pwa not found. Please run build process before.'); + process.exit(0); +} + +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Ask for FTP credentials +log.warning('Please enter your FTP credentials for the deployment.'); +log.warning('If default values are shown, you can press enter to confirm.'); +const schema = { + properties: { + host: { + description: 'FTP Host', + default: config.ftp.defaultHost, + required: true, + }, + port: { + description: 'FTP Port', + default: config.ftp.defaultPort !== '' ? config.ftp.defaultPort : 21, + }, + remoteRoot: { + description: 'FTP Upload Path', + default: config.ftp.defaultPathOnServer !== '' ? config.ftp.defaultPathOnServer : '/', + }, + user: { + description: 'FTP User Name', + default: config.ftp.defaultUserName, + required: true, + }, + password: { + description: 'FTP Password', + hidden: true, + replace: '*', + required: true, + }, + }, +}; +prompt.start(); +prompt.get(schema, (error, promptedValues) => { + // Copy and adjust configuration + const ftpConfig = JSON.parse(JSON.stringify(promptedValues)); + ftpConfig.localRoot = pwaFolder; + ftpConfig.include = ['**/*', '*', '.*']; + ftpConfig.exclude = []; + ftpConfig.deleteRemote = false; + ftpConfig.forcePasv = true; + + // Connect to FTP server + log.warning('Deploying PWA to the FTP server - this may take a while ...'); + const ftp = new FTP(); + ftp.deploy(ftpConfig, (err) => { + if (err) log.error('FTP deployment failed.'); + log.success('Completed FTP deployment.'); + }); +}); diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index 1d784249..b3551e52 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -167,6 +167,28 @@ }, "additionalProperties": false }, + "ftp": { + "type": "object", + "properties": { + "defaultHost": { + "type": "string", + "default": "" + }, + "defaultPort": { + "type": "string", + "default": "" + }, + "defaultUserName": { + "type": "string", + "default": "" + }, + "defaultPathOnServer": { + "type": "string", + "default": "" + } + }, + "additionalProperties": false + }, "debugMode": { "type": "boolean", "default": false diff --git a/templates/app/config.json b/templates/app/config.json index 3c9656ef..76c84691 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -43,5 +43,11 @@ "git": { "addLinesToIgnoreFile": [] }, + "ftp": { + "defaultHost": "", + "defaultPort": "", + "defaultUserName": "", + "defaultPathOnServer": "" + }, "debugMode": false } From 4a725f932b9ef501bc50945032447b8bdb62b399 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 12:47:53 +0100 Subject: [PATCH 111/243] app config reset on prepublish closes #861 --- package.json | 3 ++- scripts/prepublish.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 scripts/prepublish.js diff --git a/package.json b/package.json index 0572c489..bbaa5599 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "app": "./cli/app.js" }, "scripts": { - "postinstall": "node ./scripts/postinstall" + "postinstall": "node ./scripts/postinstall", + "prepublish": "node ./scripts/prepublish" }, "dependencies": { "@capacitor/android": "^1.0.0-beta.13", diff --git a/scripts/prepublish.js b/scripts/prepublish.js new file mode 100644 index 00000000..3bf5aa33 --- /dev/null +++ b/scripts/prepublish.js @@ -0,0 +1,19 @@ +// Import modules +const fs = require('fs-extra'); +const json = require('json-schema-fix'); +const log = require('./helper/logger'); +const path = require('./helper/path'); + +// Cancel if no App Framework development mode +if (!fs.pathExistsSync(path.project('.enableDevelopmentMode'))) process.exit(0); + +// Reset templates/app/config.json to default values according schema +try { + const schemaFile = path.templates('app-config-schema.json'); + const templateConfigFile = path.templates('app/config.json'); + const schema = fs.readJsonSync(schemaFile); + fs.outputJsonSync(templateConfigFile, json.create(schema), { spaces: 2 }); + log.success('Reset templates/app/config.json file.'); +} catch (e) { + log.error('Failed to reset the templates/app/config.json file.'); +} From 31381ec46ecc2f9df401392dc0b6cda748637118 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 12:48:21 +0100 Subject: [PATCH 112/243] run tests in prepublish closes #862 --- scripts/prepublish.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/prepublish.js b/scripts/prepublish.js index 3bf5aa33..32dfc311 100644 --- a/scripts/prepublish.js +++ b/scripts/prepublish.js @@ -3,6 +3,7 @@ const fs = require('fs-extra'); const json = require('json-schema-fix'); const log = require('./helper/logger'); const path = require('./helper/path'); +const run = require('./helper/run'); // Cancel if no App Framework development mode if (!fs.pathExistsSync(path.project('.enableDevelopmentMode'))) process.exit(0); @@ -17,3 +18,6 @@ try { } catch (e) { log.error('Failed to reset the templates/app/config.json file.'); } + +// Run tests +if (run.script('test').code !== 0) process.exit(1); From 46bf2d9dba50d7fdb81ebb3cc313af0f6ea053e8 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 12:48:38 +0100 Subject: [PATCH 113/243] eslint fix --- cli/app-deploy.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/app-deploy.js b/cli/app-deploy.js index ee5f55d4..c7ea98ce 100644 --- a/cli/app-deploy.js +++ b/cli/app-deploy.js @@ -1,11 +1,11 @@ #!/usr/bin/env node const program = require('commander'); -const { execSync } = require('child_process') -const path = require('../scripts/helper/path') +const { execSync } = require('child_process'); +const path = require('../scripts/helper/path'); program .option('--ftp', 'deploy PWA to FTP server') .parse(process.argv); - if (program.ftp) execSync('node ./deploy-ftp.js', { cwd: path.scripts(), stdio: 'inherit' }) +if (program.ftp) execSync('node ./deploy-ftp.js', { cwd: path.scripts(), stdio: 'inherit' }); From 5129d1e232749089183e41b7efc8c44d093b71c7 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 13:15:28 +0100 Subject: [PATCH 114/243] check changelog before publishing, use new prepublishOnly --- CHANGELOG.md | 15 +++++++++++++++ package.json | 4 ++-- scripts/{prepublish.js => prepublishOnly.js} | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md rename scripts/{prepublish.js => prepublishOnly.js} (53%) diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d0fc3e95 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# App Framework - Changelog + +## App Framework v3 + +### App Framework v3.0.0-beta.35 + +Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. + +## App Framework v2 + +App Framework v2 was never released. + +## App Framework v1 + +Please see the [changelog for v1](https://github.com/scriptPilot/app-framework/blob/v1/CHANGELOG.md). diff --git a/package.json b/package.json index bbaa5599..de3ae11d 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,14 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.34", + "version": "3.0.0-alpha.35", "license": "MIT", "bin": { "app": "./cli/app.js" }, "scripts": { "postinstall": "node ./scripts/postinstall", - "prepublish": "node ./scripts/prepublish" + "prepublishOnly": "node ./scripts/prepublishOnly" }, "dependencies": { "@capacitor/android": "^1.0.0-beta.13", diff --git a/scripts/prepublish.js b/scripts/prepublishOnly.js similarity index 53% rename from scripts/prepublish.js rename to scripts/prepublishOnly.js index 32dfc311..30d6c367 100644 --- a/scripts/prepublish.js +++ b/scripts/prepublishOnly.js @@ -21,3 +21,20 @@ try { // Run tests if (run.script('test').code !== 0) process.exit(1); +// Check changelog update +try { + const { version } = fs.readJsonSync(path.framework('package.json')) + const changelogFile = path.framework('CHANGELOG.md'); + const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); + const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g') + const searchRes = changelogFileContent.match(searchRegExp) + if (searchRes === null) { + log.error('No changelog entry found for version ' + version + '.') + } else if (searchRes.length === 1) { + log.success('Changelog entry found for version ' + version + '.') + } else { + log.error(searchRes.length + ' changelog entries found for version ' + version + '.') + } +} catch (e) { + log.error('Failed to check the changelog.'); +} From e9af2afd828ce3c71be2d46e99a4d61ae19c285f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 13:44:40 +0100 Subject: [PATCH 115/243] firebase hosting deployment closes #831 --- cli/app-deploy.js | 2 + package-lock.json | 2915 +++++++++++++++++++++++++++- package.json | 3 +- scripts/deploy-firebase.js | 70 + scripts/update-gitignore-config.js | 3 + templates/app-config-schema.json | 10 + 6 files changed, 2983 insertions(+), 20 deletions(-) create mode 100644 scripts/deploy-firebase.js diff --git a/cli/app-deploy.js b/cli/app-deploy.js index c7ea98ce..ebd2f68f 100644 --- a/cli/app-deploy.js +++ b/cli/app-deploy.js @@ -6,6 +6,8 @@ const path = require('../scripts/helper/path'); program .option('--ftp', 'deploy PWA to FTP server') + .option('--firebase', 'deploy PWA to Firebase Hosting') .parse(process.argv); if (program.ftp) execSync('node ./deploy-ftp.js', { cwd: path.scripts(), stdio: 'inherit' }); +if (program.firebase) execSync('node ./deploy-firebase.js', { cwd: path.scripts(), stdio: 'inherit' }); diff --git a/package-lock.json b/package-lock.json index 0b4fa969..c875d0a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.33", + "version": "3.0.0-alpha.35", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -777,6 +777,290 @@ "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-1.0.0-beta.13.tgz", "integrity": "sha512-geGWOefd2N92wHOOU4ERV6meQFFu7Ahboz12XYY1S3VTt0oN05edqQ/6ryitsEXvxXba6HM3Lg/oK6iIs7OXFQ==" }, + "@google-cloud/common": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.17.0.tgz", + "integrity": "sha512-HRZLSU762E6HaKoGfJGa8W95yRjb9rY7LePhjaHK9ILAnFacMuUGVamDbTHu1csZomm1g3tZTtXfX/aAhtie/Q==", + "optional": true, + "requires": { + "array-uniq": "^1.0.3", + "arrify": "^1.0.1", + "concat-stream": "^1.6.0", + "create-error-class": "^3.0.2", + "duplexify": "^3.5.0", + "ent": "^2.2.0", + "extend": "^3.0.1", + "google-auto-auth": "^0.10.0", + "is": "^3.2.0", + "log-driver": "1.2.7", + "methmeth": "^1.1.0", + "modelo": "^4.2.0", + "request": "^2.79.0", + "retry-request": "^3.0.0", + "split-array-stream": "^1.0.0", + "stream-events": "^1.0.1", + "string-format-obj": "^1.1.0", + "through2": "^2.0.3" + }, + "dependencies": { + "google-auto-auth": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", + "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", + "optional": true, + "requires": { + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" + } + } + } + }, + "@google-cloud/functions-emulator": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/@google-cloud/functions-emulator/-/functions-emulator-1.0.0-beta.5.tgz", + "integrity": "sha512-65qxXqyyD5SnKBlv76YNZDKRxP2o8sh2B5bSkiV4VHNmoaRiB/SYjc2GQuKqrxwJ6MbI4mhTLgvNTy6BSP2QSQ==", + "optional": true, + "requires": { + "@google-cloud/storage": "^1.7.0", + "adm-zip": "^0.4.11", + "ajv": "^6.5.2", + "body-parser": "^1.18.3", + "cli-table2": "0.2.0", + "colors": "1.1.2", + "configstore": "^3.1.2", + "express": "^4.16.3", + "googleapis": "^23.0.2", + "got": "^8.3.2", + "http-proxy": "1.16.2", + "lodash": "4.17.5", + "prompt": "1.0.0", + "rimraf": "2.6.2", + "semver": "5.5.0", + "serializerr": "1.0.3", + "tmp": "0.0.33", + "uuid": "3.2.1", + "winston": "2.4.0", + "yargs": "11.0.0" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", + "optional": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "optional": true + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "optional": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "optional": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "optional": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "optional": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "optional": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "optional": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "optional": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "optional": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "optional": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "optional": true + }, + "winston": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", + "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=", + "optional": true, + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "optional": true + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "optional": true + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "optional": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "optional": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@google-cloud/storage": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-1.7.0.tgz", + "integrity": "sha512-QaAxzCkbhspwajoaEnT0GcnQcpjPRcBrHYuQsXtD05BtOJgVnHCLXSsfUiRdU0nVpK+Thp7+sTkQ0fvk5PanKg==", + "optional": true, + "requires": { + "@google-cloud/common": "^0.17.0", + "arrify": "^1.0.0", + "async": "^2.0.1", + "compressible": "^2.0.12", + "concat-stream": "^1.5.0", + "create-error-class": "^3.0.2", + "duplexify": "^3.5.0", + "extend": "^3.0.0", + "gcs-resumable-upload": "^0.10.2", + "hash-stream-validation": "^0.2.1", + "is": "^3.0.1", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "once": "^1.3.1", + "pumpify": "^1.5.1", + "request": "^2.85.0", + "safe-buffer": "^5.1.1", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "through2": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "optional": true + } + } + }, "@iarna/toml": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.1.tgz", @@ -1499,6 +1783,12 @@ "physical-cpu-count": "^2.0.0" } }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "optional": true + }, "@stencil/dev-server": { "version": "0.0.18-1", "resolved": "https://registry.npmjs.org/@stencil/dev-server/-/dev-server-0.0.18-1.tgz", @@ -1567,6 +1857,15 @@ } } }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "abab": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", @@ -1577,6 +1876,15 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, "acorn": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", @@ -1601,6 +1909,12 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "optional": true + }, "agent-base": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", @@ -1625,6 +1939,14 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + } + }, "ansi-escapes": { "version": "3.1.0", "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -1673,6 +1995,34 @@ "default-require-extensions": "^1.0.0" } }, + "archiver": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", + "requires": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "requires": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1704,6 +2054,17 @@ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "optional": true + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", @@ -1714,6 +2075,11 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, + "as-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz", + "integrity": "sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=" + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -1893,6 +2259,15 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2282,6 +2657,19 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=" + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2300,6 +2688,15 @@ "resolved": "http://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, "bluebird": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", @@ -2326,11 +2723,93 @@ "safe-json-parse": "~1.0.1" } }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + } + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2478,11 +2957,40 @@ "ieee754": "^1.1.4" } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, "buffer-equal": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2531,6 +3039,72 @@ } } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "optional": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "optional": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "optional": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "optional": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "optional": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "optional": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "optional": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -2590,6 +3164,11 @@ "rsvp": "^3.3.3" } }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -2605,6 +3184,11 @@ "supports-color": "^5.3.0" } }, + "char-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/char-spinner/-/char-spinner-1.0.1.tgz", + "integrity": "sha1-5upnvSR+EHESmDt6sEee02KAAIE=" + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -2650,6 +3234,14 @@ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" }, + "cjson": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz", + "integrity": "sha1-qS2ceG5b+bkwgGMp7gXV0yYbSvo=", + "requires": { + "json-parse-helpfulerror": "^1.0.3" + } + }, "clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", @@ -2716,6 +3308,11 @@ } } }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, "cli-color": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", @@ -2742,6 +3339,69 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + } + } + }, + "cli-table2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cli-table2/-/cli-table2-0.2.0.tgz", + "integrity": "sha1-LR738hig54biFFQFYtS9F3/jLZc=", + "optional": true, + "requires": { + "colors": "^1.1.2", + "lodash": "^3.10.1", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -2762,6 +3422,15 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "clones": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/clones/-/clones-1.1.0.tgz", @@ -2890,6 +3559,14 @@ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" }, + "compare-semver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz", + "integrity": "sha1-fAp5onu4C2xplERfgpWCWdPQIVM=", + "requires": { + "semver": "^5.0.1" + } + }, "compare-versions": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", @@ -2900,6 +3577,59 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "requires": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2925,6 +3655,106 @@ "proto-list": "~1.2.1" } }, + "configstore": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", + "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", + "requires": { + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.1", + "os-tmpdir": "^1.0.0", + "osenv": "^0.1.0", + "uuid": "^2.0.1", + "write-file-atomic": "^1.1.2", + "xdg-basedir": "^2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "requires": { + "os-homedir": "^1.0.0" + } + } + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "connect-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/connect-query/-/connect-query-1.0.0.tgz", + "integrity": "sha1-3kT1dyCdokBNH8BGktGkEY5YIRk=", + "requires": { + "qs": "~6.4.0" + }, + "dependencies": { + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + } + } + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -2951,6 +3781,17 @@ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "optional": true + }, + "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==" + }, "continuable-cache": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", @@ -2964,6 +3805,18 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "optional": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "optional": true + }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", @@ -3006,6 +3859,23 @@ } } }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "requires": { + "buffer": "^5.1.0" + } + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "requires": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + } + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -3015,6 +3885,14 @@ "elliptic": "^6.0.0" } }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, "create-hash": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -3040,6 +3918,15 @@ "sha.js": "^2.4.8" } }, + "cross-env": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", + "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "requires": { + "cross-spawn": "^6.0.5", + "is-windows": "^1.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3070,6 +3957,11 @@ "randomfill": "^1.0.3" } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, "css-color-names": { "version": "0.0.4", "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -3300,6 +4192,48 @@ "cssom": "0.3.x" } }, + "csv-streamify": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csv-streamify/-/csv-streamify-3.0.4.tgz", + "integrity": "sha1-TLYUxX4/KZzKF7Y/3LStFnd39Ho=", + "requires": { + "through2": "2.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", + "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", + "requires": { + "readable-stream": "~2.0.0", + "xtend": "~4.0.0" + } + } + } + }, "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", @@ -3390,11 +4324,25 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-equal": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -3547,6 +4495,11 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" }, + "didyoumean": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", + "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=" + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -3660,6 +4613,22 @@ "readable-stream": "^2.0.2" } }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -3669,6 +4638,14 @@ "safer-buffer": "^2.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ecstatic": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-2.2.1.tgz", @@ -3737,6 +4714,12 @@ "once": "^1.4.0" } }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "optional": true + }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -3814,6 +4797,18 @@ "es6-promise": "^4.0.3" } }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -4115,6 +5110,12 @@ "es5-ext": "~0.10.14" } }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "optional": true + }, "events": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -4161,6 +5162,16 @@ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, + "exit-code": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/exit-code/-/exit-code-1.0.2.tgz", + "integrity": "sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ=" + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -4190,6 +5201,79 @@ "jest-regex-util": "^23.3.0" } }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "optional": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "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.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true + }, + "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=", + "optional": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "optional": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -4588,6 +5672,21 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -4662,6 +5761,44 @@ "repeat-string": "^1.5.2" } }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "optional": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "optional": true + } + } + }, "find": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz", @@ -4670,13 +5807,324 @@ "traverse-chain": "~0.1.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "firebase": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-2.4.2.tgz", + "integrity": "sha1-ThEZ7AOWylYdinrL/xYw/qxsCjE=", + "requires": { + "faye-websocket": ">=0.6.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.3.tgz", + "integrity": "sha1-SCpQWw3wrmJrlphm0710DNuWLoM=", + "requires": { + "websocket-driver": ">=0.5.1" + }, + "dependencies": { + "websocket-driver": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.5.2.tgz", + "integrity": "sha1-jHyF2gcTtAYFVrTXHAF3XuEmnrk=", + "requires": { + "websocket-extensions": ">=0.1.1" + }, + "dependencies": { + "websocket-extensions": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", + "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=" + } + } + } + } + } + } + }, + "firebase-tools": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-6.2.2.tgz", + "integrity": "sha512-paknn5f3E4yzkxde0AY10ESpWdJi49waojHjePv42sHtGNyS2VQ34jI0kJTdJ+95daIV8lhd5I8pjHVk34M+lQ==", + "requires": { + "@google-cloud/functions-emulator": "^1.0.0-beta.5", + "JSONStream": "^1.2.1", + "archiver": "^2.1.1", + "cjson": "^0.3.1", + "cli-color": "^1.2.0", + "cli-table": "^0.3.1", + "commander": "^2.8.1", + "configstore": "^1.2.0", + "cross-env": "^5.1.3", + "cross-spawn": "^4.0.0", + "csv-streamify": "^3.0.4", + "didyoumean": "^1.2.1", + "es6-set": "^0.1.4", + "exit-code": "^1.0.2", + "filesize": "^3.1.3", + "firebase": "2.x.x", + "fs-extra": "^0.23.1", + "glob": "^7.1.2", + "google-auto-auth": "^0.7.2", + "inquirer": "^0.12.0", + "is": "^3.2.1", + "jsonschema": "^1.0.2", + "jsonwebtoken": "^8.2.1", + "lodash": "^4.17.10", + "minimatch": "^3.0.4", + "opn": "^5.3.0", + "ora": "0.2.3", + "portfinder": "^1.0.13", + "progress": "^2.0.0", + "request": "^2.87.0", + "semver": "^5.0.3", + "superstatic": "^6.0.1", + "tar": "^4.3.0", + "tmp": "0.0.33", + "universal-analytics": "^0.4.16", + "update-notifier": "^2.5.0", + "user-home": "^2.0.0", + "uuid": "^3.0.0", + "winston": "^1.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "fs-extra": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", + "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + } + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "requires": { + "once": "^1.3.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "winston": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-1.1.2.tgz", + "integrity": "sha1-aO3Xaf951PlSjPDl2AAhqt5nSAw=", + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + } + } + } + }, + "flat-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flat-arguments/-/flat-arguments-1.0.2.tgz", + "integrity": "sha1-m6p4Ct8FAfKC1ybJxqA426ROp28=", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-flatten": "^1.0.0", + "as-array": "^1.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isobject": "^3.0.0" + }, + "dependencies": { + "as-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/as-array/-/as-array-1.0.0.tgz", + "integrity": "sha1-KKbu6qVynx9OyiBH316d4avaDtE=", + "requires": { + "lodash.isarguments": "2.4.x", + "lodash.isobject": "^2.4.1", + "lodash.values": "^2.4.1" + }, + "dependencies": { + "lodash.isarguments": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz", + "integrity": "sha1-STGpwIJTrfCRrnyhkiWKlzh27Mo=" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + } + } + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=" + } } }, "flat-cache": { @@ -4695,6 +6143,29 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" }, + "follow-redirects": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", + "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4741,6 +6212,12 @@ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "optional": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -4770,6 +6247,21 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "optional": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -5309,6 +6801,57 @@ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, + "gcp-metadata": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", + "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", + "requires": { + "axios": "^0.18.0", + "extend": "^3.0.1", + "retry-axios": "0.3.2" + } + }, + "gcs-resumable-upload": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-0.10.2.tgz", + "integrity": "sha1-fymz7iPc7EFwNnwHEUGCScZgVF8=", + "optional": true, + "requires": { + "configstore": "^3.1.2", + "google-auto-auth": "^0.10.0", + "pumpify": "^1.4.0", + "request": "^2.85.0", + "stream-events": "^1.0.3" + }, + "dependencies": { + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "optional": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "google-auto-auth": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", + "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", + "optional": true, + "requires": { + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" + } + } + } + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -5403,6 +6946,21 @@ "is-glob": "^2.0.0" } }, + "glob-slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz", + "integrity": "sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U=" + }, + "glob-slasher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz", + "integrity": "sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44=", + "requires": { + "glob-slash": "^1.0.0", + "lodash.isobject": "^2.4.1", + "toxic": "^1.0.0" + } + }, "glob-to-regexp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", @@ -5417,11 +6975,202 @@ "process": "~0.5.1" } }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, "globals": { "version": "11.9.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" }, + "google-auth-library": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", + "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", + "requires": { + "axios": "^0.18.0", + "gcp-metadata": "^0.6.3", + "gtoken": "^2.3.0", + "jws": "^3.1.5", + "lodash.isstring": "^4.0.1", + "lru-cache": "^4.1.3", + "retry-axios": "^0.3.2" + } + }, + "google-auto-auth": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.7.2.tgz", + "integrity": "sha512-ux2n2AE2g3+vcLXwL4dP/M12SFMRX5dzCzBfhAEkTeAB7dpyGdOIEj7nmUx0BHKaCcUQrRWg9kT63X/Mmtk1+A==", + "requires": { + "async": "^2.3.0", + "gcp-metadata": "^0.3.0", + "google-auth-library": "^0.10.0", + "request": "^2.79.0" + }, + "dependencies": { + "gcp-metadata": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.3.1.tgz", + "integrity": "sha512-5kJPX/RXuqoLmHiOOgkSDk/LI0QaXpEvZ3pvQP4ifjGGDKZKVSOjL/GcDjXA5kLxppFCOjmmsu0Uoop9d1upaQ==", + "requires": { + "extend": "^3.0.0", + "retry-request": "^3.0.0" + } + }, + "google-auth-library": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.10.0.tgz", + "integrity": "sha1-bhW6vuhf0d0U2NEoopW2g41SE24=", + "requires": { + "gtoken": "^1.2.1", + "jws": "^3.1.4", + "lodash.noop": "^3.0.1", + "request": "^2.74.0" + } + }, + "google-p12-pem": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", + "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", + "requires": { + "node-forge": "^0.7.1" + } + }, + "gtoken": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.3.tgz", + "integrity": "sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w==", + "requires": { + "google-p12-pem": "^0.1.0", + "jws": "^3.0.0", + "mime": "^1.4.1", + "request": "^2.72.0" + } + } + } + }, + "google-p12-pem": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.3.tgz", + "integrity": "sha512-KGnAiMMWaJp4j4tYVvAjfP3wCKZRLv9M1Nir2wRRNWUYO7j1aX8O9Qgz+a8/EQ5rAvuo4SIu79n6SIdkNl7Msg==", + "requires": { + "node-forge": "^0.7.5", + "pify": "^4.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "googleapis": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-23.0.2.tgz", + "integrity": "sha512-OobqDn586ogcF0dE+Byu5xZ6XmR/J7nkZN/wmhJoaxKdmELaf27ty2gKxGuq3I4/GDN+hcsUaMBueoQzFD3ObA==", + "optional": true, + "requires": { + "async": "2.6.0", + "google-auth-library": "0.12.0", + "string-template": "1.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "optional": true, + "requires": { + "lodash": "^4.14.0" + } + }, + "google-auth-library": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.12.0.tgz", + "integrity": "sha512-79qCXtJ1VweBmmLr4yLq9S4clZB2p5Y+iACvuKk9gu4JitEnPc+bQFmYvtCYehVR44MQzD1J8DVmYW2w677IEw==", + "optional": true, + "requires": { + "gtoken": "^1.2.3", + "jws": "^3.1.4", + "lodash.isstring": "^4.0.1", + "lodash.merge": "^4.6.0", + "request": "^2.81.0" + } + }, + "google-p12-pem": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", + "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", + "optional": true, + "requires": { + "node-forge": "^0.7.1" + } + }, + "gtoken": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.3.tgz", + "integrity": "sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w==", + "optional": true, + "requires": { + "google-p12-pem": "^0.1.0", + "jws": "^3.0.0", + "mime": "^1.4.1", + "request": "^2.72.0" + } + }, + "string-template": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz", + "integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y=", + "optional": true + } + } + }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "optional": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "optional": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true + } + } + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -5441,6 +7190,30 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "gtoken": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", + "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", + "requires": { + "axios": "^0.18.0", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.4", + "mime": "^2.2.0", + "pify": "^3.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "handlebars": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", @@ -5494,11 +7267,26 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "optional": true + }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "optional": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5562,6 +7350,15 @@ "safe-buffer": "^5.0.1" } }, + "hash-stream-validation": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", + "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", + "optional": true, + "requires": { + "through2": "^2.0.0" + } + }, "hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", @@ -5601,6 +7398,11 @@ "resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, + "home-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/home-dir/-/home-dir-1.0.0.tgz", + "integrity": "sha1-KRfrRL3JByztqUJXlUOEfjAX/k4=" + }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -6058,6 +7860,12 @@ } } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "optional": true + }, "http-errors": { "version": "1.6.3", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -6074,6 +7882,16 @@ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "optional": true, + "requires": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + } + }, "http-proxy-agent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", @@ -6179,6 +7997,11 @@ } } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, "import-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", @@ -6280,6 +8103,16 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "optional": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -6298,6 +8131,17 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "optional": true + }, + "is": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==" + }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -6452,6 +8296,20 @@ "is-extglob": "^1.0.0" } }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -6465,6 +8323,20 @@ "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "optional": true + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -6500,6 +8372,11 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -6518,11 +8395,22 @@ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -6696,6 +8584,16 @@ "handlebars": "^4.0.3" } }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "optional": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "jest": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", @@ -7300,14 +9198,36 @@ "core-js": "^2.5.7" } }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=" + }, "joi": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", "requires": { - "hoek": "4.x.x", - "isemail": "3.x.x", - "topo": "2.x.x" + "hoek": "4.x.x", + "isemail": "3.x.x", + "topo": "2.x.x" + } + }, + "join-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/join-path/-/join-path-1.1.1.tgz", + "integrity": "sha1-EFNaEm0ky9Zff/zfFe8uYxB2tQU=", + "requires": { + "as-array": "^2.0.0", + "url-join": "0.0.1", + "valid-url": "^1" + }, + "dependencies": { + "url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" + } } }, "jpeg-js": { @@ -7401,20 +9321,34 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "optional": true + }, "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==" }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "requires": { + "jju": "^1.1.0" + } + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-fix": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/json-schema-fix/-/json-schema-fix-1.0.4.tgz", - "integrity": "sha512-JmavbBDXvHBD+P406EMRGw1sbkvgluq4IXmkqnadNNZ6lros/awIM+HVQgSD4Xg5NjNOtjPBJRVNCUf5AqFa+A==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/json-schema-fix/-/json-schema-fix-1.0.5.tgz", + "integrity": "sha512-BFnrA+67PR4lDBHOQses6E0BJNMHLkcIfML5lBo3v/5/J8BRYYxpnTKMbVeetYCKveoVMJpP4f68Jpz9UkXliQ==" }, "json-schema-traverse": { "version": "0.4.1", @@ -7454,6 +9388,32 @@ "graceful-fs": "^4.1.6" } }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "jsonschema": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz", + "integrity": "sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw==" + }, + "jsonwebtoken": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.4.0.tgz", + "integrity": "sha512-coyXjRTCy0pw5WYBpMvWOMN+Kjaik2MwTUIq9cna/W7NpO9E+iYbumZONAz3hcr+tXFJECoQVrtmIoC3Oz0gvg==", + "requires": { + "jws": "^3.1.5", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -7465,6 +9425,34 @@ "verror": "1.10.0" } }, + "jwa": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "requires": { + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "optional": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -7473,11 +9461,35 @@ "is-buffer": "^1.1.5" } }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "^4.1.9" + } + }, "kleur": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==" }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "^4.0.0" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -7557,11 +9569,29 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=" + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=" + }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, "lodash.clone": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", @@ -7572,11 +9602,80 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "optional": true + }, + "lodash.noop": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", + "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -7604,6 +9703,20 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "requires": { + "lodash.keys": "~2.4.1" + } + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "optional": true + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", @@ -7620,6 +9733,11 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -7645,6 +9763,21 @@ "vlq": "^0.2.2" } }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -7699,6 +9832,11 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, "mem": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", @@ -7729,6 +9867,12 @@ "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "optional": true + }, "merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -7757,6 +9901,12 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" }, + "methmeth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz", + "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk=", + "optional": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -7814,6 +9964,11 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -7896,6 +10051,39 @@ "minimist": "0.0.8" } }, + "modelo": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz", + "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==", + "optional": true + }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -7947,6 +10135,29 @@ } } }, + "nash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/nash/-/nash-3.0.0.tgz", + "integrity": "sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w==", + "requires": { + "async": "^1.3.0", + "flat-arguments": "^1.0.0", + "lodash": "^4.17.5", + "minimist": "^1.1.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -7957,6 +10168,11 @@ "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=" }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, "netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", @@ -8261,6 +10477,11 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8359,6 +10580,12 @@ "os-tmpdir": "^1.0.0" } }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "optional": true + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -8390,6 +10617,15 @@ "p-limit": "^1.1.0" } }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "optional": true, + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -8456,6 +10692,50 @@ "thunkify": "^2.1.2" } }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, "pako": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", @@ -9048,6 +11328,36 @@ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==" }, + "portfinder": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -10316,6 +12626,22 @@ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, + "protochain": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/protochain/-/protochain-1.0.5.tgz", + "integrity": "sha1-mRxAfpneJkqt+PgVBLXn+ve/omA=", + "optional": true + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "optional": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, "proxy-agent": { "version": "2.3.1", "resolved": "http://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", @@ -10378,6 +12704,27 @@ "once": "^1.3.1" } }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -10489,6 +12836,24 @@ } } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -10813,6 +13178,31 @@ } } }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" + } + } + }, "realpath-native": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", @@ -10914,12 +13304,29 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" } }, "regjsgen": { @@ -11051,6 +13458,12 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "optional": true + }, "resolve": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", @@ -11084,6 +13497,15 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "optional": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -11098,6 +13520,20 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "retry-axios": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", + "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" + }, + "retry-request": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", + "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", + "requires": { + "request": "^2.81.0", + "through2": "^2.0.0" + } + }, "revalidator": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", @@ -11130,6 +13566,45 @@ "inherits": "^2.0.1" } }, + "router": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/router/-/router-1.3.3.tgz", + "integrity": "sha1-wUL2tepNazNZAiypW2WAvSF/ic8=", + "requires": { + "array-flatten": "2.1.1", + "debug": "2.6.9", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "setprototypeof": "1.1.0", + "utils-merge": "1.0.1" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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=" + } + } + }, "rsvp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", @@ -11143,6 +13618,11 @@ "is-promise": "^2.1.0" } }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" + }, "rxjs": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", @@ -11485,6 +13965,14 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "^5.0.3" + } + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -11539,6 +14027,15 @@ "safer-eval": "^1.2.3" } }, + "serializerr": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/serializerr/-/serializerr-1.0.3.tgz", + "integrity": "sha1-EtTFqhw/+49tHcXzlaqUVVacP5E=", + "optional": true, + "requires": { + "protochain": "^1.0.5" + } + }, "serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", @@ -11673,11 +14170,22 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, "smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=" }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", + "optional": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -11880,6 +14388,16 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" }, + "split-array-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", + "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "optional": true, + "requires": { + "async": "^2.4.0", + "is-stream-ended": "^0.1.0" + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12036,6 +14554,14 @@ "readable-stream": "^2.0.2" } }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "requires": { + "stubs": "^3.0.0" + } + }, "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -12048,11 +14574,22 @@ "xtend": "^4.0.0" } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string-format-obj": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz", + "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==", + "optional": true + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -12133,6 +14670,11 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + }, "stylehacks": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz", @@ -12206,6 +14748,121 @@ } } }, + "superstatic": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-6.0.4.tgz", + "integrity": "sha512-Nfli9mSPa9fJloKuDeUOdqC1lcw4c4SnxiWPB8s7Yn1iYo7Ja3pj7qc8AXMqHVqn/Kf7QsxBjAeOJTpuJ0mcrQ==", + "requires": { + "as-array": "^2.0.0", + "async": "^1.5.2", + "basic-auth-connect": "^1.0.0", + "chalk": "^1.1.3", + "char-spinner": "^1.0.1", + "compare-semver": "^1.0.0", + "compression": "^1.7.0", + "connect": "^3.6.2", + "connect-query": "^1.0.0", + "destroy": "^1.0.4", + "fast-url-parser": "^1.1.3", + "fs-extra": "^0.30.0", + "glob": "^7.1.2", + "glob-slasher": "^1.0.1", + "home-dir": "^1.0.0", + "is-url": "^1.2.2", + "join-path": "^1.1.1", + "lodash": "^4.17.4", + "mime-types": "^2.1.16", + "minimatch": "^3.0.4", + "morgan": "^1.8.2", + "nash": "^3.0.0", + "on-finished": "^2.2.0", + "on-headers": "^1.0.0", + "path-to-regexp": "^1.7.0", + "router": "^1.3.1", + "rsvp": "^3.6.2", + "string-length": "^1.0.0", + "try-require": "^1.0.0", + "update-notifier": "^2.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "requires": { + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -12272,11 +14929,64 @@ } } }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "template7": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/template7/-/template7-1.4.0.tgz", "integrity": "sha512-NMJWbKIoowHixUYIHq+DLvcBM47t/oZ/xfvBbYuMusjjS6BUjC02+gLWctntJuTTiEqILfefBNCXbfp/EMt/zQ==" }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + } + } + }, "terser": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/terser/-/terser-3.13.1.tgz", @@ -12391,6 +15101,11 @@ "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -12469,6 +15184,11 @@ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -12529,6 +15249,14 @@ "punycode": "^2.1.1" } }, + "toxic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", + "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", + "requires": { + "lodash": "^4.17.10" + } + }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -12552,6 +15280,11 @@ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, + "try-require": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/try-require/-/try-require-1.2.1.tgz", + "integrity": "sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=" + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -12583,6 +15316,15 @@ "prelude-ls": "~1.1.2" } }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -12694,6 +15436,34 @@ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -12750,11 +15520,48 @@ } } }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, "upath": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -12789,11 +15596,42 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "optional": true, + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "optional": true + } + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "optional": true + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "requires": { + "os-homedir": "^1.0.0" + } + }, "utif": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", @@ -12844,6 +15682,11 @@ } } }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -12854,6 +15697,11 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==" }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -12863,6 +15711,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, "vendors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", @@ -13040,6 +15893,14 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + } + }, "winston": { "version": "2.1.1", "resolved": "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz", @@ -13286,6 +16147,11 @@ "async-limiter": "~1.0.0" } }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", @@ -13418,6 +16284,17 @@ "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "requires": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + } } } } diff --git a/package.json b/package.json index de3ae11d..559b3101 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "eslint-plugin-jest": "^22.1.2", "eslint-plugin-vue": "^5.1.0", "find": "^0.2.9", + "firebase-tools": "^6.2.2", "framework7": "^3.6.5", "framework7-vue": "^3.6.5", "fs-extra": "^7.0.1", @@ -33,7 +34,7 @@ "jest": "^23.6.0", "jest-html-reporter": "^2.4.2", "jimp": "^0.6.0", - "json-schema-fix": "^1.0.4", + "json-schema-fix": "^1.0.5", "opn": "^5.4.0", "parcel-bundler": "^1.11.0", "parcel-plugin-sw-cache": "^0.2.6", diff --git a/scripts/deploy-firebase.js b/scripts/deploy-firebase.js new file mode 100644 index 00000000..50c5355d --- /dev/null +++ b/scripts/deploy-firebase.js @@ -0,0 +1,70 @@ +// Import modules +const { execSync } = require('child_process'); +const fs = require('fs-extra'); +const path = require('./helper/path'); +const log = require('./helper/logger'); + +// Check if PWA was build before +const pwaFolder = path.project('pwa'); +if (!fs.pathExistsSync(pwaFolder)) { + log.error('Folder /pwa not found. Please run build process before.'); + process.exit(0); +} + +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + +// Check if Firebase project ID is set +if (config.firebase.projectID === '') log.error('Please add the firebase project ID in the app configuration file.'); + + +// Update .firebaserc file +const firebasercFile = path.project('.firebaserc'); +const firebasercConfig = { + projects: { + default: config.firebase.projectID, + }, +}; +try { + fs.outputJsonSync(firebasercFile, firebasercConfig, { spaces: 2 }); + log.success('Updated the .firebaserc file.'); +} catch (e) { + log.error('Failed to update the .firebaserc file.'); +} + +// Update firebase.json file +const firebaseJsonFile = path.project('firebase.json'); +const firebaseJsonConfig = { + hosting: { + public: './pwa', + ignore: ['.htaccess'], + rewrites: [ + { + source: '**', + destination: '/index.html', + }, + ], + }, +}; +try { + fs.outputJsonSync(firebaseJsonFile, firebaseJsonConfig, { spaces: 2 }); + log.success('Updated the firebase.json file.'); +} catch (e) { + log.error('Failed to update the firebase.json file.'); +} + +// Login to Firebase +execSync('npx firebase login', { cwd: path.project(), stdio: 'inherit' }); + +// Use configured project (value in .firebaserc.json not considered properly) +execSync(`npx firebase use "${config.firebase.projectID}"`, { cwd: path.project(), stdio: 'inherit' }); + +// Do deployment +execSync('npx firebase deploy --only hosting', { cwd: path.project(), stdio: 'inherit' }); diff --git a/scripts/update-gitignore-config.js b/scripts/update-gitignore-config.js index 16f0198a..f600505a 100644 --- a/scripts/update-gitignore-config.js +++ b/scripts/update-gitignore-config.js @@ -24,6 +24,7 @@ const toBeIgnored = [ '', '# Generated Files', '.cache/', + '.firebase/', '.git/', 'pwa', 'ios', @@ -33,9 +34,11 @@ const toBeIgnored = [ '.editorconfig', '.enableDevelopmentMode', '.eslintrc.json', + '.firebaserc', '.gitignore', '.jestconfig.json', 'capacitor.config.json', + 'firebase.json', ]; // Merge with app configuration diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index b3551e52..a4e220ea 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -189,6 +189,16 @@ }, "additionalProperties": false }, + "firebase": { + "type": "object", + "properties": { + "projectID": { + "type": "string", + "default": "" + } + }, + "additionalProperties": false + }, "debugMode": { "type": "boolean", "default": false From 0c90944f5c200fcb01866eec7d04cf5073bd0bfc Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 13:44:52 +0100 Subject: [PATCH 116/243] eslint fix --- scripts/prepublishOnly.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 30d6c367..9f1b1e1e 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -23,17 +23,17 @@ try { if (run.script('test').code !== 0) process.exit(1); // Check changelog update try { - const { version } = fs.readJsonSync(path.framework('package.json')) + const { version } = fs.readJsonSync(path.framework('package.json')); const changelogFile = path.framework('CHANGELOG.md'); const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); - const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g') - const searchRes = changelogFileContent.match(searchRegExp) + const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); + const searchRes = changelogFileContent.match(searchRegExp); if (searchRes === null) { - log.error('No changelog entry found for version ' + version + '.') + log.error(`No changelog entry found for version ${version}.`); } else if (searchRes.length === 1) { - log.success('Changelog entry found for version ' + version + '.') + log.success(`Changelog entry found for version ${version}.`); } else { - log.error(searchRes.length + ' changelog entries found for version ' + version + '.') + log.error(`${searchRes.length} changelog entries found for version ${version}.`); } } catch (e) { log.error('Failed to check the changelog.'); From 923e2b4a653563e1edab5f78cf82377f202c5a4a Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 14:14:39 +0100 Subject: [PATCH 117/243] fix json --- templates/manifest.webmanifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/manifest.webmanifest b/templates/manifest.webmanifest index 9b35ac2a..00d22614 100644 --- a/templates/manifest.webmanifest +++ b/templates/manifest.webmanifest @@ -9,12 +9,12 @@ { "src": "./icons/icon-192px.png", "sizes": "192x192", - "type": "image/png", + "type": "image/png" }, { "src": "./icons/icon-512px.png", "sizes": "512x512", - "type": "image/png", + "type": "image/png" } ], "scope": "/", From 4213b1755467770dccbe3ad3b35e799b63253c1a Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 14:15:04 +0100 Subject: [PATCH 118/243] fix missing manifest and icons --- scripts/build-icons.js | 8 +++++--- scripts/build-pwa.js | 33 ++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/scripts/build-icons.js b/scripts/build-icons.js index c261463c..ed28bec3 100644 --- a/scripts/build-icons.js +++ b/scripts/build-icons.js @@ -26,9 +26,11 @@ const createIcon = (name, size, callback) => { }; clearIconFolder(() => { - createIcon('icon-512px.png', 512, () => { - createIcon('icon-192px.png', 192, () => { - log.success('Icons updated.'); + createIcon('pwa/icon-512px.png', 512, () => { + createIcon('pwa/icon-192px.png', 192, () => { + createIcon('pwa/apple-touch-icon.png', 180, () => { + log.success('Icons updated.'); + }); }); }); }); diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index da2cf275..b3543a59 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -3,6 +3,7 @@ const fs = require('fs-extra'); const find = require('find'); const path = require('./helper/path'); const log = require('./helper/logger'); +const run = require('./helper/run'); // Load app configuration const configFile = path.app('config.json'); @@ -49,7 +50,18 @@ try { log.error('Failed to copy .htaccess file.'); } -// Add manifest tag to index.html file +// Update manifest file in cache +if (run.script('update-manifest-file').code !== 0) process.exit(1); + +// Copy manifest file to PWA cache folder +try { + fs.copySync(path.cache('manifest.webmanifest'), path.cache('pwa/manifest.webmanifest')); + log.success('Copied manifest.webmanifest file to PWA cache.'); +} catch (e) { + log.error('Failed to copy manifest.webmanifest file to PWA cache.'); +} + +// Add additional tags to index.html file const indexFile = path.resolve(cacheFolder, 'index.html'); let indexFileContent = ''; try { @@ -58,13 +70,16 @@ try { } catch (e) { log.error('Failed to read index.html template file.'); } -const manifestTag = ''; -const newIndexFileContent = indexFileContent.replace('', `${manifestTag}`); +const additionalTags = ` + + +`; +const newIndexFileContent = indexFileContent.replace('', `${additionalTags}`); try { fs.writeFileSync(indexFile, newIndexFileContent); - log.success('Added manifest tag to index.html file.'); + log.success('Added additional tags to index.html file.'); } catch (e) { - log.error('Failed to add manifest tag to index.html file.'); + log.error('Failed to add additional tags to index.html file.'); } // Add service worker @@ -106,6 +121,14 @@ if (config.pwa.includeOfflineServiceWorker) { log.info('Skipped offline service worker creation according configuration.'); } +// Copy icon files +try { + fs.copySync(path.cache('icons/pwa'), path.cache('pwa/icons')); + log.success('Copied icon files to PWA cache.'); +} catch (e) { + log.error('Failed to copy icon files to PWA cache.'); +} + // Replace build files const buildFolder = path.project('pwa'); try { From 6870fbe2f74acb6ca0f4290efc1f2fd6078926f4 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 14:31:24 +0100 Subject: [PATCH 119/243] open PWA in browser after build closes #839 --- package-lock.json | 41 ++++++++++---------------------- package.json | 1 + scripts/build-pwa.js | 10 ++++++++ templates/app-config-schema.json | 4 ++++ 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index c875d0a5..5bf8d7c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3784,8 +3784,7 @@ "content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "optional": true + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" }, "content-type": { "version": "1.0.4", @@ -3808,14 +3807,12 @@ "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "optional": true + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "optional": true + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "cookiejar": { "version": "2.1.2", @@ -5205,7 +5202,6 @@ "version": "4.16.4", "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "optional": true, "requires": { "accepts": "~1.3.5", "array-flatten": "1.1.1", @@ -5243,7 +5239,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, "requires": { "ms": "2.0.0" } @@ -5251,26 +5246,22 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "optional": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "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=", - "optional": true + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "optional": true + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" } } }, @@ -5765,7 +5756,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "optional": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -5780,7 +5770,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, "requires": { "ms": "2.0.0" } @@ -5788,14 +5777,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "optional": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "optional": true + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" } } }, @@ -6215,8 +6202,7 @@ "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "optional": true + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, "fragment-cache": { "version": "0.2.1", @@ -8134,8 +8120,7 @@ "ipaddr.js": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", - "optional": true + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" }, "is": { "version": "3.3.0", @@ -9870,8 +9855,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "optional": true + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, "merge-source-map": { "version": "1.1.0", @@ -12636,7 +12620,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "optional": true, "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.8.0" diff --git a/package.json b/package.json index 559b3101..b269cad5 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "eslint-plugin-import": "^2.14.0", "eslint-plugin-jest": "^22.1.2", "eslint-plugin-vue": "^5.1.0", + "express": "^4.16.4", "find": "^0.2.9", "firebase-tools": "^6.2.2", "framework7": "^3.6.5", diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index b3543a59..0b62a888 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -1,6 +1,8 @@ // Load modules const fs = require('fs-extra'); const find = require('find'); +const express = require('express'); +const opn = require('opn'); const path = require('./helper/path'); const log = require('./helper/logger'); const run = require('./helper/run'); @@ -138,3 +140,11 @@ try { } catch (e) { log.error('Failed to copy PWA build files to folder /pwa'); } + +// Open PWA in browser +if (config.pwa.openInBrowserAfterBuild) { + const app = express(); + app.use('/', express.static(path.project('pwa'))); + app.listen('1337', '127.0.0.1'); + opn('http://127.0.0.1:1337'); +} diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index a4e220ea..82c43d0d 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -34,6 +34,10 @@ "type": "boolean", "default": true }, + "openInBrowserAfterBuild": { + "type": "boolean", + "default": true + }, "includeOfflineServiceWorker": { "type": "boolean", "default": true From 713dada308635f20c45f34e86b533026c8919241 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 15:03:27 +0100 Subject: [PATCH 120/243] icon build improvement closes #845 , closes #849 --- scripts/build-icons.js | 62 +++++++++++++++++--------------- templates/app-config-schema.json | 4 +++ 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/scripts/build-icons.js b/scripts/build-icons.js index ed28bec3..46c7504d 100644 --- a/scripts/build-icons.js +++ b/scripts/build-icons.js @@ -1,36 +1,40 @@ +// Import modules const fs = require('fs-extra'); const jimp = require('jimp'); const path = require('./helper/path'); const log = require('./helper/logger'); -const sourceFile = path.app('icon.png'); -const iconFolder = path.cache('icons'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} -const clearIconFolder = (callback) => { - fs.emptyDir(iconFolder, () => { - log.success('Icon folder cleaned-up.'); - callback(); - }); +// Build icons +const buildIcons = async () => { + // Build PWA icons + if (config.pwa.buildOnBuildCommand) { + try { + // Empty cache folder + fs.emptyDirSync(path.cache('icons/pwa')); + // Create PWA icons + let image; + image = await jimp.read(path.app(config.pwa.iconFile)); + image.resize(512, 512).write(path.cache('icons/pwa/icon-512px.png')); + image = await jimp.read(path.app(config.pwa.iconFile)); + image.resize(192, 192).write(path.cache('icons/pwa/icon-192px.png')); + image = await jimp.read(path.app(config.pwa.iconFile)); + image.resize(180, 180).write(path.cache('icons/pwa/apple-touch-icon.png')); + // Log success + log.success('Created PWA icons.'); + } catch (e) { + log.debug(e); + log.error('Failed to create PWA icons.'); + } + } }; - -const createIcon = (name, size, callback) => { - const destFile = path.resolve(iconFolder, name); - jimp.read(sourceFile, (readError, iconFile) => { - iconFile.resize(size, size, (resizeError, resizedFile) => { - resizedFile.write(destFile, () => { - log.success(`Icon ${name} created.`); - callback(); - }); - }); - }); -}; - -clearIconFolder(() => { - createIcon('pwa/icon-512px.png', 512, () => { - createIcon('pwa/icon-192px.png', 192, () => { - createIcon('pwa/apple-touch-icon.png', 180, () => { - log.success('Icons updated.'); - }); - }); - }); -}); +buildIcons(); diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index 82c43d0d..6b998e4e 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -41,6 +41,10 @@ "includeOfflineServiceWorker": { "type": "boolean", "default": true + }, + "iconFile": { + "type": "string", + "default": "icon.png" } }, "additionalProperties": false From 9003fff33180b542c279ec492abd5412e52d20f8 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 15:05:31 +0100 Subject: [PATCH 121/243] bump version --- CHANGELOG.md | 2 +- package.json | 2 +- templates/app/config.json | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0fc3e95..b2ab5172 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-beta.35 +### App Framework v3.0.0-alpha.36 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package.json b/package.json index b269cad5..c8cbe17c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.35", + "version": "3.0.0-alpha.36", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/templates/app/config.json b/templates/app/config.json index 76c84691..e4527a3b 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -8,7 +8,9 @@ }, "pwa": { "buildOnBuildCommand": true, - "includeOfflineServiceWorker": true + "openInBrowserAfterBuild": true, + "includeOfflineServiceWorker": true, + "iconFile": "icon.png" }, "ios": { "buildOnBuildCommand": false, @@ -49,5 +51,8 @@ "defaultUserName": "", "defaultPathOnServer": "" }, + "firebase": { + "projectID": "" + }, "debugMode": false } From 004c2205e1df4a8baf561259da5cc4ed10c075df Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 19:24:06 +0100 Subject: [PATCH 122/243] icon update closes #865 --- templates/app/icon.drawio.xml | 1 + templates/app/icon.png | Bin 28670 -> 21334 bytes 2 files changed, 1 insertion(+) create mode 100644 templates/app/icon.drawio.xml diff --git a/templates/app/icon.drawio.xml b/templates/app/icon.drawio.xml new file mode 100644 index 00000000..71ef4106 --- /dev/null +++ b/templates/app/icon.drawio.xml @@ -0,0 +1 @@ +jZPBUoMwEIafhmNngFgsx4ptHUdPPTh6cSJsITawNAQBn95AUiDWzjgcknz/7mbZ3TgkytudoGX2jAlwx3eT1iH3ju97N8RVS086TW5DokEqWKKRO4E9+wbjaWDNEqgsJBG5ZKUNYywKiKXFqBDY2GYH5IkFSprCBdjHlF/SF5bITNPAdSf+ACzN5C/hg8bHVGBdmOsKLEArOT1HMaZVRhNsZohsHBIJRKl3eRsB74tq12t7RR0zFlDI/zh88g/5tqpOT2yddvAannaP7wvTpC/Ka1MJxw+4ind3QBVWZS07U6PgVONZWFRDA9fKwF+6ZTupapf267osz5FUSjqYVkw1xrj+UD7os3SV3GRMwr6kca82atgUy2TO1cnrb2ecR8hRDL7E98LgQExWM76N+k/xSgo8wl8e5s9BSGivltQbG6UmHzAHKTplYjt01qmZ5mcZrjTLZrMzQmpmNh3jTt1TG9PA83EalEGbPUOy+QE= \ No newline at end of file diff --git a/templates/app/icon.png b/templates/app/icon.png index 06abe3d18e8c040c800e7c0b5195f095a3d1467a..f7f05e5de78c819b0070b4776962a7ce058afaad 100644 GIT binary patch literal 21334 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 G-~KNY9_f+* literal 28670 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 Date: Sun, 6 Jan 2019 19:27:20 +0100 Subject: [PATCH 123/243] icon update --- templates/app/pages/icon.png | Bin 0 -> 21171 bytes templates/icon.drawio.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 templates/app/pages/icon.png diff --git a/templates/app/pages/icon.png b/templates/app/pages/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dca73aaafa6deb4be5e4efcf129bd0988259e600 GIT binary patch literal 21171 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 LtyKK*>8t+*siA2U literal 0 HcmV?d00001 diff --git a/templates/icon.drawio.xml b/templates/icon.drawio.xml index 9eff588c..2b1b0735 100644 --- a/templates/icon.drawio.xml +++ b/templates/icon.drawio.xml @@ -1 +1 @@ -jZNNb4MwDIZ/DcdJQLRWPbasHzt0msSmSbtljUmyBYxSt9D++oUSCrSaNC4kj+MX57UJWJLXa8tLtUUBJohDUQfsKYjjaDIN3ashp5ZMZ6wF0mrRorAHqT6Dz/TwoAXsR4gQDelyDHdYFLCjEePWYjU+lqERI1ByCXcg3XFzTz+0INXSxyju+Qa0VHQTyHl31t9ur7jAaoDYMmCJRaR2ldcJmMa6sSurP6LXuiwU9J+E7/c3spsy28pp8inZy3MqXh+8ypGbg7/vvCx9vXTqPHBCzm63WVRKE6Ql3zWRyjXcMUW5cbvILTNtTIIG7SWPxdFskjHH92TxB7pIgUWjlWFBvt0xCz0YZK8uj+OGf4FZoBVgbySOYEm7Xs2NloXDuRaiKXqh0Oqzk+NdZdJyoaHX9wIWiZPGJrep4N7TziD3IagHyHu8BsyB7MkdqYbT4dPUaDK6qfQTKa+5fdfcwjeu2/YDcokNfjK2/AU= \ No newline at end of file +jZNNU4MwEIZ/DcfOALFYjhVrHUdPPTh6cVJYIDawNAQBf72BhC9rZ+SS5Hl3N8vuxiJB1uwFLdIXjIBbrh01Frm3XNe5IbZaOtJqcusTDRLBIo3sCRzYNxhPAysWQblAEpFLVixhiHkOoVwwKgTWS7MYebQABU3gAhxCyi/pK4tkqqln2xN/BJak8pdwpOEpEVjl5rocc9BKRocoxrRMaYT1DJGdRQKBKPUuawLgXVGX9Xq4oo4ZC8jlfxw++VG+b8rzM9smLbz55/3Tx8o06YvyylTCcj2u4t3FqMKqrGVrauSdKxyEVdk3cKsM3LVdNJOqdkm3botiiKRS0sG0YqoxxnX78kGXpa3kOmUSDgUNO7VWw6ZYKjOuTk53O+M8QI6i9yWu43sxMVnNeNx/ipdS4An+8jB/DkJCc7WkztgoNfmAGUjRKpOlQ7s41dP8rP2NZulsdkZIzcwmY9ype2pjGjgcp0HptdkzJLsf \ No newline at end of file From f1c58013f8369c7e15900e48c8540a7cdb3f812c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 19:28:02 +0100 Subject: [PATCH 124/243] prompt user for firebase project to deploy --- scripts/deploy-firebase.js | 94 ++++++++++++++++++-------------- templates/app-config-schema.json | 2 +- templates/app/config.json | 2 +- 3 files changed, 55 insertions(+), 43 deletions(-) diff --git a/scripts/deploy-firebase.js b/scripts/deploy-firebase.js index 50c5355d..300a3eb1 100644 --- a/scripts/deploy-firebase.js +++ b/scripts/deploy-firebase.js @@ -1,6 +1,7 @@ // Import modules const { execSync } = require('child_process'); const fs = require('fs-extra'); +const prompt = require('prompt'); const path = require('./helper/path'); const log = require('./helper/logger'); @@ -21,50 +22,61 @@ try { log.error('Failed to load app config file.'); } -// Check if Firebase project ID is set -if (config.firebase.projectID === '') log.error('Please add the firebase project ID in the app configuration file.'); - - -// Update .firebaserc file -const firebasercFile = path.project('.firebaserc'); -const firebasercConfig = { - projects: { - default: config.firebase.projectID, +// Ask for FTP credentials +log.warning('Please enter your Firebase project ID for the deployment.'); +log.warning('If a default value is shown, you can press enter to confirm.'); +const schema = { + properties: { + projectID: { + description: 'Firebase Project ID', + default: config.firebase.defaultProjectID, + required: true, + }, }, }; -try { - fs.outputJsonSync(firebasercFile, firebasercConfig, { spaces: 2 }); - log.success('Updated the .firebaserc file.'); -} catch (e) { - log.error('Failed to update the .firebaserc file.'); -} +prompt.start(); +prompt.get(schema, (error, promptedValues) => { + // Update .firebaserc file + const firebasercFile = path.project('.firebaserc'); + const firebasercConfig = { + projects: { + default: promptedValues.projectID, + }, + }; + try { + fs.outputJsonSync(firebasercFile, firebasercConfig, { spaces: 2 }); + log.success('Updated the .firebaserc file.'); + } catch (e) { + log.error('Failed to update the .firebaserc file.'); + } -// Update firebase.json file -const firebaseJsonFile = path.project('firebase.json'); -const firebaseJsonConfig = { - hosting: { - public: './pwa', - ignore: ['.htaccess'], - rewrites: [ - { - source: '**', - destination: '/index.html', - }, - ], - }, -}; -try { - fs.outputJsonSync(firebaseJsonFile, firebaseJsonConfig, { spaces: 2 }); - log.success('Updated the firebase.json file.'); -} catch (e) { - log.error('Failed to update the firebase.json file.'); -} + // Update firebase.json file + const firebaseJsonFile = path.project('firebase.json'); + const firebaseJsonConfig = { + hosting: { + public: './pwa', + ignore: ['.htaccess'], + rewrites: [ + { + source: '**', + destination: '/index.html', + }, + ], + }, + }; + try { + fs.outputJsonSync(firebaseJsonFile, firebaseJsonConfig, { spaces: 2 }); + log.success('Updated the firebase.json file.'); + } catch (e) { + log.error('Failed to update the firebase.json file.'); + } -// Login to Firebase -execSync('npx firebase login', { cwd: path.project(), stdio: 'inherit' }); + // Login to Firebase + execSync('npx firebase login', { cwd: path.project(), stdio: 'inherit' }); -// Use configured project (value in .firebaserc.json not considered properly) -execSync(`npx firebase use "${config.firebase.projectID}"`, { cwd: path.project(), stdio: 'inherit' }); + // Use configured project (value in .firebaserc.json not considered properly) + execSync(`npx firebase use "${promptedValues.projectID}"`, { cwd: path.project(), stdio: 'inherit' }); -// Do deployment -execSync('npx firebase deploy --only hosting', { cwd: path.project(), stdio: 'inherit' }); + // Do deployment + execSync('npx firebase deploy --only hosting', { cwd: path.project(), stdio: 'inherit' }); +}); diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index 6b998e4e..ea7e9df7 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -200,7 +200,7 @@ "firebase": { "type": "object", "properties": { - "projectID": { + "defaultProjectID": { "type": "string", "default": "" } diff --git a/templates/app/config.json b/templates/app/config.json index e4527a3b..d52a724f 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -52,7 +52,7 @@ "defaultPathOnServer": "" }, "firebase": { - "projectID": "" + "defaultProjectID": "" }, "debugMode": false } From 400551938d8e4f3d3b6a3a0ff358a852f4a99565 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 19:28:17 +0100 Subject: [PATCH 125/243] replace paths in general --- scripts/update-main-file.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index 7705e6ea..8876fccd 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -13,9 +13,9 @@ try { log.error('Failed to read main.js template file.'); } -// Replace path to app component -const relativeAppComponentPath = path.relative(path.cache(), path.app('app.vue')); -const mainFileContent = templateFileContent.replace('./app/app.vue', relativeAppComponentPath); +// Replace paths +const relativeAppFolderPath = path.relative(path.cache(), path.app()); +const mainFileContent = templateFileContent.replace('./app/', `${relativeAppFolderPath}/`); // Update main.js file const mainFile = path.cache('main.js'); From de4e5106091f5abbb41aabc778e9780b6ab2dd5f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 22:56:49 +0100 Subject: [PATCH 126/243] unblock PWA opening in browser --- scripts/build-pwa.js | 9 +-------- scripts/build.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/scripts/build-pwa.js b/scripts/build-pwa.js index 0b62a888..3c5b79e3 100644 --- a/scripts/build-pwa.js +++ b/scripts/build-pwa.js @@ -1,8 +1,6 @@ // Load modules const fs = require('fs-extra'); const find = require('find'); -const express = require('express'); -const opn = require('opn'); const path = require('./helper/path'); const log = require('./helper/logger'); const run = require('./helper/run'); @@ -142,9 +140,4 @@ try { } // Open PWA in browser -if (config.pwa.openInBrowserAfterBuild) { - const app = express(); - app.use('/', express.static(path.project('pwa'))); - app.listen('1337', '127.0.0.1'); - opn('http://127.0.0.1:1337'); -} +// function moved to /build.js file to avoid blocking of other scripts diff --git a/scripts/build.js b/scripts/build.js index ba043f7c..d49f2a01 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,5 +1,7 @@ // Import modules const fs = require('fs-extra'); +const express = require('express'); +const opn = require('opn'); const run = require('./helper/run'); const path = require('./helper/path'); const log = require('./helper/logger'); @@ -47,3 +49,11 @@ const runNextScript = () => { runNextScript(); log.success('Completed the build routine.'); + +// Open PWA (later scripts are blocked because script will not exit) +if (config.pwa.buildOnBuildCommand && config.pwa.openInBrowserAfterBuild) { + const app = express(); + app.use('/', express.static(path.project('pwa'))); + app.listen('1337', '127.0.0.1'); + opn('http://127.0.0.1:1337'); +} From 0a433b8e5a14146756c0db5bcd4292422fc7c0e5 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 22:59:48 +0100 Subject: [PATCH 127/243] ios icons closes #736, closes #867 --- scripts/build-ios.js | 81 ++++++++++++++++++++++++++++++- templates/app-config-schema.json | 12 +++++ templates/app/icon.png | Bin 21334 -> 61636 bytes templates/icon.drawio.xml | 2 +- 4 files changed, 92 insertions(+), 3 deletions(-) diff --git a/scripts/build-ios.js b/scripts/build-ios.js index d0cd59d0..13dea178 100644 --- a/scripts/build-ios.js +++ b/scripts/build-ios.js @@ -1,5 +1,6 @@ // Import modules const fs = require('fs-extra'); +const jimp = require('jimp'); const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); @@ -31,5 +32,81 @@ const updateScript = run.silent('npx cap sync ios'); if (updateScript.code === 0) log.success('Updated the iOS project folder.'); else log.error('Failed to update the iOS project folder.'); -// Open Xcode -if (config.ios.openXcodeAfterBuild) run.silent('npx cap open ios'); +// Create icons, splash screens and open Xcode +const createIconsAndSplashScreensAndOpenXcode = async () => { + try { + // Sleep function as helper (last file otherwise locked for copying) + const sleep = ms => new Promise((resolve) => { + setTimeout(resolve, ms); + }); + // Create icons + const iosIconFolder = path.project('ios/App/App/Assets.xcassets/AppIcon.appiconset'); + const iosIconCacheFolder = path.cache('icons/ios'); + const createIcons = async () => { + log.warning('Creating iOS icons - this may take a while ...'); + // Read Contents.json + const contents = fs.readJsonSync(path.resolve(iosIconFolder, 'Contents.json')); + // Empty cache folder + fs.emptyDirSync(iosIconCacheFolder); + // Loop Contents.json + // eslint-disable-next-line no-restricted-syntax + for (const imageInfo of contents.images) { + const size = Number(imageInfo.size.split('x')[0]); + const factor = Number(imageInfo.scale.replace('x', '')); + const realSize = size * factor; + // eslint-disable-next-line no-await-in-loop + const image = await jimp.read(path.app(config.ios.iconFile)); + // eslint-disable-next-line no-await-in-loop + await image.resize(realSize, realSize) + .write(path.resolve(iosIconCacheFolder, imageInfo.filename)); + log.success(`Icon ${imageInfo.filename} created`); + } + }; + await createIcons(); + // Copy icons + await sleep(500); + fs.copySync(iosIconCacheFolder, iosIconFolder); + // Log success + log.success('Created iOS icons.'); + // Create splash screens + const iosSplashFolder = path.project('ios/App/App/Assets.xcassets/Splash.imageset'); + const iosSplashCacheFolder = path.cache('icons/ios-splash'); + const createSplash = async () => { + log.warning('Creating iOS splash screens - this may take a while ...'); + // Read Contents.json + const contents = fs.readJsonSync(path.resolve(iosSplashFolder, 'Contents.json')); + // Empty cache folder + fs.emptyDirSync(iosSplashCacheFolder); + // Loop Contents.json + // eslint-disable-next-line no-restricted-syntax + for (const imageInfo of contents.images) { + const canvasSize = Number(imageInfo.filename.match(/[0-9]{3,4}/g)[0]); + // eslint-disable-next-line no-await-in-loop, new-cap + const canvas = await new jimp( + canvasSize, + canvasSize, + config.ios.splashScreenBackgroundColor, + ); + // eslint-disable-next-line no-await-in-loop + const icon = await jimp.read(path.app(config.ios.splashScreenIconFile)); + const iconSize = canvasSize * 0.2; + // eslint-disable-next-line no-await-in-loop + await icon.resize(iconSize, iconSize); + canvas.composite(icon, 0.4 * canvasSize, 0.4 * canvasSize) + .write(path.resolve(iosSplashCacheFolder, imageInfo.filename)); + log.success(`Splash screen ${imageInfo.filename} created`); + } + }; + await createSplash(); + // Copy splash screens + await sleep(500); + fs.copySync(iosSplashCacheFolder, iosSplashFolder); + // Log success + log.success('Created iOS splash screens.'); + // Open Xcode + if (config.ios.openXcodeAfterBuild) run.silent('npx cap open ios'); + } catch (e) { + log.error('Failed to create iOS icons and splash screens.'); + } +}; +createIconsAndSplashScreensAndOpenXcode(); diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index ea7e9df7..3f30cbfd 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -63,6 +63,18 @@ "relatedITunesApplicationID": { "type": "string", "default": "" + }, + "iconFile": { + "type": "string", + "default": "icon.png" + }, + "splashScreenIconFile": { + "type": "string", + "default": "icon.png" + }, + "splashScreenBackgroundColor": { + "type": "string", + "default": "#2196f3" } }, "additionalProperties": false diff --git a/templates/app/icon.png b/templates/app/icon.png index f7f05e5de78c819b0070b4776962a7ce058afaad..914849d028e49735cb3512445abfd149e45dc869 100644 GIT binary patch literal 61636 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 G-~KNY9_f+* diff --git a/templates/icon.drawio.xml b/templates/icon.drawio.xml index 2b1b0735..fd5152d9 100644 --- a/templates/icon.drawio.xml +++ b/templates/icon.drawio.xml @@ -1 +1 @@ -jZNNU4MwEIZ/DcfOALFYjhVrHUdPPTh6cVJYIDawNAQBf72BhC9rZ+SS5Hl3N8vuxiJB1uwFLdIXjIBbrh01Frm3XNe5IbZaOtJqcusTDRLBIo3sCRzYNxhPAysWQblAEpFLVixhiHkOoVwwKgTWS7MYebQABU3gAhxCyi/pK4tkqqln2xN/BJak8pdwpOEpEVjl5rocc9BKRocoxrRMaYT1DJGdRQKBKPUuawLgXVGX9Xq4oo4ZC8jlfxw++VG+b8rzM9smLbz55/3Tx8o06YvyylTCcj2u4t3FqMKqrGVrauSdKxyEVdk3cKsM3LVdNJOqdkm3botiiKRS0sG0YqoxxnX78kGXpa3kOmUSDgUNO7VWw6ZYKjOuTk53O+M8QI6i9yWu43sxMVnNeNx/ipdS4An+8jB/DkJCc7WkztgoNfmAGUjRKpOlQ7s41dP8rP2NZulsdkZIzcwmY9ype2pjGjgcp0HptdkzJLsf \ No newline at end of file +jZNNU4MwEIZ/DcfOQDL9OlasdRw99eDoxUlhgdjA0hAE/PUGEr6snZFLkufNviy7i0P9tD5IlicvGIJwiBvWDr13CFmuiauXljSGUG9NDIklDw1zR3Dk32CgZ2HJQyhmSCEKxfM5DDDLIFAzxqTEan4tQhHOQM5iuALHgIlr+spDlVhKXHcUHoHHifqtnFhwjiWWmX1hhhkYJWW9j71aJCzEaoLo3qG+RFRml9Y+iLau84o93FCHnCVk6j8Bn+Kk3jfF5Znv4gbetpfD08eCGpcvJkpbC4eshPa7i1Db6qxVY6u0upTYC4uia+FOX1i6bl6Pqt7F7brL895Jp2TMjGKrMfiSrnzQZulquUq4gmPOglat9LxplqhU6JPXvp0L4aNA2cVS4m1XEbVZTXjUPZoXSuIZ/oqwXw5SQX2zpN7QKD38gCko2egr84BmdqomE+RtNwYm0+kZKLNzGw/OY//0xrawP46j0mmTf5HufwA= \ No newline at end of file From 856b4534b3e12bce7ceb74e00b17664fba9769f3 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 23:00:03 +0100 Subject: [PATCH 128/243] theme = auto is default --- templates/app/app.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/app/app.vue b/templates/app/app.vue index b6cdbad6..ddc58773 100644 --- a/templates/app/app.vue +++ b/templates/app/app.vue @@ -11,7 +11,6 @@ export default { data() { return { f7Params: { - theme: 'auto', routes, }, }; From a49a7fac57e88056bea2c2b177bb059c44f3b0f2 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Sun, 6 Jan 2019 23:19:01 +0100 Subject: [PATCH 129/243] version bump --- CHANGELOG.md | 2 +- README.md | 6 +++--- package.json | 2 +- templates/app/config.json | 5 ++++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2ab5172..97b21b94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.36 +### App Framework v3.0.0-alpha.40 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/README.md b/README.md index 3a7f50d2..ce847cd5 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,13 @@ App Framework 3 is under development. **For production usage please use [App Fra - `npx app test` to run all configured tests - `npx app dev` to open application on development server -- `npx app build` to build application to */build* folder +- `npx app build` to build application according configuration - `npx app deploy --ftp` to deploy the PWA to any FTP server +- `npx app deploy --firebase` to deploy the PWA to any FTP server ## Update -Updating does not work properly as necessary scripts are not completed. -To test the newest development version, you should create a new app. +Run `npm update` to update to latest development version. ## Contribution diff --git a/package.json b/package.json index c8cbe17c..f133bdf8 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.36", + "version": "3.0.0-alpha.40", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/templates/app/config.json b/templates/app/config.json index d52a724f..2d6172ba 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -15,7 +15,10 @@ "ios": { "buildOnBuildCommand": false, "openXcodeAfterBuild": true, - "relatedITunesApplicationID": "" + "relatedITunesApplicationID": "", + "iconFile": "icon.png", + "splashScreenIconFile": "icon.png", + "splashScreenBackgroundColor": "#2196f3" }, "android": { "buildOnBuildCommand": false, From 0308d87f057f8969a55c30e5cda4877b4e0faaa4 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 7 Jan 2019 19:40:02 +0100 Subject: [PATCH 130/243] removed icon from wrong folder --- templates/app/pages/icon.png | Bin 21171 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 templates/app/pages/icon.png diff --git a/templates/app/pages/icon.png b/templates/app/pages/icon.png deleted file mode 100644 index dca73aaafa6deb4be5e4efcf129bd0988259e600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21171 zcmeIa=UY=j_bzNhMHB=C1ZgTr2~B#BNRuutkuFH@5Q=m=3J3~>UX}r4|oX~X7--BXRUSLYb`!J)>gfCh3U$fGiR=;JyOy; zbLJfM^y~6P;3xGm9&gT^VLzj$q+syed9x+l0U7@E;QXA>khq{>2IZ zf~9{E&?GI4fr3x48?Ar_quEA%T5Gw$Fg z<)>$|epIgbmn6^w^C_D>ryg~GtAY+bDVk|CuXcMHvYA&Q_k!Hf2PuwKh91I3Ewkk6b-rC%yW9a_~}|@#x`X$Nl@4&;6OqjP471v49!8`}SMrU0C@; z)CED4Bf;p=vf!F9{emB^;Czg3Y#ARAi-hq0Iu<3Wt>h|T+ zy?A*5OjIz13y|`ZIBJZ;$24$`dI-&Fy2QY8J)L?rJpYoYFB-rFFthp{n)2-)NF1B@ zvc1ydc=-CCTiIr#q8BRy zRPhfdWUoBaWoW;_G&VKU-?{o`h!mn=Kf{Wg^lw!U`rg-D@9aG7BO^1vcgP2#Zy)G|r#)`XAw0$&#rGp*2&8On*O!is*~NXS9U~{-<*zeIh_q6 zKNLlXkav)Je%=IFa`6k;m3pDsQ*u%4JLMl#)bj#(RW{&o@99k`LPy{)jWNh3ROAw7 z+4LuPrB&o3{w^s7EIBkkG}gmf8XS{?F6=@h=;2{pQ~cQLaZULZ>a*_Dz=>M}`x;G* za$Gx^LdwGEn8N>88d2QVEqm!Q{t6w9PmT*tdfCnBkK z6J3{ba2<8AFy8vYpR@G5U|)>Yofh%b1Rypsu!Dnys}E?f(Py7rs}p;~c=z=FzM=kt zzVe&-$h_rhca=`l_1}cJCJ%jKS?Sla?pB>__fH3v0XxwgS9W0Mq-e#=g*7&sqlc&K=0WFmdQl@XtNTR;=R#* z0Q;v0%6kfKgCa^W*wS8m__1R!PAQ#1e&`;TbMA@k2>C7wt0h>*tj!W96neUa7l7ec zuq;#EIOpZuUA6Gx%C9UMgPQVuTpe?jJDX_Ic{jRQncse;a`n6%R=^VM0%wy7t2gOn z$HRBq)!mxW2x)p~z1LLH@}U;~5&`Te&|U>~cM^I|U3O}DzI2~HJKrxj^J=ui=MPP_ z?d9q)6O0Ioqt<-OuR_E#CN`xm<{0t4K|U^iE8V)gP<`=5&z;j9Gyp7?VItHl=wQ!9 zZ!;4?WJ)8O`Wawttqobu32<^>EXugb(t-G1!)r}R54`agho#&kV1Mm6zcu{9ftM~|-NN0G$Io^tyYjV`7hJoD4PT9LGhZoO=T_jK zwh3%bpyE5_nol!oqD8(#=I`?Uh8O=h#$s? z?d_yQFSmF~V&Om5PthK91-OZJlMH@?<1mw;QPb!Z>BP3J<$A_3UlzQ{>(zHNIS_OV+en{3_PX*ll0R<}Oj z63krLqLTUaqCVApLBKwF7)?1xIA31g9wxmdXyA#QUsd!hA1<%K4_(?)FF%3$}+5TfABpSi%*S*kFYh&H(4{S8ckdgkT=Xd>1KSSlQ^-SP( z&YYtFHcXes;ReQiE*dI0P?pW0bogZeODC*}13HGsf z%raRoM6~Ixf)_3>#5sO)UflBQN!sFc=nn7fi2u>mwBr%p7E^I$vsb3`Eu^Bk?AuFS z5HWf|s8tO{*D`i!{?08WdTOO;mz_kxcEjdd0+y8(jPW&o=bWI2s$B;ANgYwUUMo-p zt$o8RNZVr!Nd5^<0-*k9`6@;ZAKn$X!fI8PG6~Vub6dwGBek?Z6bDppbL-@U&`ql6&N8o4T=J(ay6q_1~&vqu1waZDW{A z6=Iz08t0(7!Us_cNQ+T2XeFL6@L^>fj3=APCxJ%a@- z@gk8&Mp`DC5vH-C!D9yaKOIbm%a885hsQEV8olJ8E(4Y20f3DDlj@|eVyu3j%>BH1!gX3G94PtQjn6T z53?GeeC*rQ&p#8m1e$H=nwMiFr?lUAGX{gJNLASx`xEUALRPh3PYw-+v)!02a3Djk z?vFc^=h2-E=@lZUEqK$Y9g3&h;p$l-V{&)Tj|>G|*{hcb-^B37CrCMjRx+a#j}Z!N zWd$5O-@e3YC#-4}i}>4FkBB8(lOI(UF41e;iR$9T^2Ch)Fw1@)lnL1ue&U48;Iav^ zP6Cmn^gga1|B^Ct;Yqcz#aTQ9C-(CG&Vl-h*%NJ;W_DhCM(fM>9aLj;lK7gxBT|Ge zl}vH85;Z#%iC)NlmEzuz zo^2C64B}LE%O1Jx^Fk-l=o2;S;Dgj78o3pYcG?^h?!!)b2O^Jztgatpiy7z9?@X8J zNxhFQnUF?XK7uhh$i~S{6k4@O&Br8x8p4OpjK`nv8^sm2+;w%?5MPT5_igM=sh;x? zm5|_yuN^1Y&J^eJ=hNmSkM?Py%CON$-&>^>2Ob)NW`|zMDI#LUq4<1wxA4-*)H4L# z3C%{tBN&}dah-~PqmRS>D!o6|eYq0_-HVWFoR-}sNyn!U+%4MCDYW#TVrPO)ku-g3gFh+(Ri6I!}8+~%RzH);#lPXJI-t`YJ1n@Hdb}ia1QIF zmP=wVI`@4X;?8HaWAe=)REg`B(yMqd)ZHWBh`8JfHxwX)!oqgu49_Tibp}ypa zBd1^f%$+Z2^=|nxxf6t2P7otCq6>3P?BPPmdf`q-n@{0l^Q7hUmSrHnUHb2L(w4z? zTd~Xy*Puo8@YgP)&O+ zRX0Ee32JrTx8nmt6%nHa%pFK84PIwaQK%(`c4`7nvS~(e{U&@X-=n{coaXt?8d_!y zVx_uY^VPmML&Ip~ybp{VA6z<#gSeU%JzH~t%UBFx#xsM62t~;shSkM(18X{tX+jdl zU+=dq9|S8$v+-Np*l(rvgLTY42DOj0yrO=BpbOCZbteOT#V&O(O&cfAzxvV&u|m{Q zFQ4=7GHwd7!Ktbcteaf{7mTMAOJ}1vXGqYl)J|~g6lhQCn4fbvZgTDpuiG_JBg|^_ zn_f>GAsqX@uDqch?cn&ymFKf*Or_5G&l+OylfOWmgz>`r4Ey(Y2`g%}F8H(@NI_RY zcaKRCUFzMB&kT|ZB{yd{)e#n9EZ_0#Rtmvly1Q{tTkDT8I*@~+;t;3DTV1MxYDCfZ zJ}%F%z`izh9#nF;_3&Vq(%;M8FXSF+c(UJd!!_r*Z*3snO|(kTdX=7HB&i@vFFX;Z z;kj2$@3%sGtMKAu(4cy@m}yjcF1jG5XxAL0D=?ocfiiSbupS+y_ak70!uu%4ggA3| zhXaHfGWkU3mdg$N%Tk5R%+rEOM&)bw=NWk2a-=JKKMvo%m2JJW`mw-m*oR)VwE--h z$$i(YV&jkvxj9s%3z~&^1O-JB3bZ$ae5N9n3nfuQr_8_iqh-jx4%6qD)w9D{0|_pZ z#$(N%je!B$YO4X6>5w zKJ~04=fYxTMMx4z2L1Ts%y(+3p=J-k=LK5bNi;hQC;I_5)=|i9t{bU4!MZzCILQL~ zriT|%!Hr%Nj#I~u=GsZ~zG~U(DWNVY(RamNqTTp&LuC9dJuoDPd<mOY8G9$eo(O}y|3MFA-lI&KC>yhzVd{ z8}p#_lol}%Y{zv0{&H6N_Y~lRz1JN!+ zm)R{R)!&o;OaV`|CQLC&QBuwMD)L@lo8G8Ykb1q5s?< zJA7|MTO+3!+x{KkH9*{JbE#R)kAYs5rbnWi?GjQ?+dGgbLNo@!HHNx%fG}HIfWe=G zYvohiU5No8kZ(wbTjv%w0(7tRyjMwYItr@71Q#@ao5U`b?^)^9=%r7UBAjoy8YI%0 zoI8|Mi-J%+0n<4zUWA4>_?2qS^0#~P<-t8;>5mir3*p5Y%_lLU(2Y6wGF73~FGWQS zb(07Rik=rZ5m5%~3~Ye8U>g-p@T78~Dd4Q90MeMb<_Kqyf1g>l*cMu=ENPt?d$1M4 zLV^uEzFN<-Jb`8*0hf_PKdg^1;G)~r831IQhGvxp64S@c9t;rndxj{StQSK(mdNj+ zQ;{YrI~F=8!(Wn#0j(EG`W=`|BrUsLsrSc%_&q~702AHW+Hhd=!%Xd38G3E9gw38# z!ozJII0f@MbH{A|{O76wW0CMpRVhA_?RR2}w=U^x$I~pIaSxZYsB;r@ zYF&jrNTqMSBmZfed_XQQXm~~(E$TVZN3ydiT=j>B&FQ2km+pSMP;9OXGCPV3BF-&- zg&aO=mb%hqnBoTlIj*RQ<2y$ig4x#(DZ(W;WkRiAcY;OzR1_#N{A18x9qPev+0-}R zEaaTSES|FdPalm7KCOb-e3x!SG9|!~afZQ{A1htq{QUbIUu^vs;GDJI2JTl7AA^Fk zrkURoc)ROHy%eAPPc48q6H(VBYkclW-?;IWJD2b{E5cX;c)Pt#;nw_Aw3?%~AVStB zB6)@!hV6V6QH}Irg7}6XM94F?U#NcJ{nrgxreiW7he5ZTFpxvFW(k@u!$2tzXu5E> zqphlNQS6o)KKjYv_gb`dF-{P)aE7ar!!{H6k6|D;5Pz85T?a%VVQ+{jRjIE^&}tgv zSbz&=&7$>q>NFB9z8c_^X1u^hf*%F&kEq+wAc+o1h2vN|QeQP1;VLJ@)LN(A=o(&0%l8Ol~t`Asd6FS9*u* zzvC+0YCIM#X<08;%TXJ3C18ltx;}E0kCV$a9TL*lXhysxEsjGdI5vmS4LKtA;=}Be zk_w-D8v10R*izuc8}YNx_fj*M|5)onMNqx7S+Qh=TWO-@Bvl%?1kq z0Mg=IC#gm!k2RRaJAx%_-67%@YP;sdy1GXvx00I03U7-$DyyRDos?C1BXxmbyG?&g zx5m%slz9+KW~a0rW1J!cG=z7)6**VFT5a#-{EY4J&p9!2+T#yvY>Gy z8*{yfy7rh9LLNQO2}E&JQSZ=Vj}WnmhgZOmaHQUC1+AbILP1VH&t{aINWad8!njd- zoOOKRia6Z~>X|Vmw2pIJS6~&}5w+$DueG28f5=p6el4u*Yqp&>fh8?i(tWq!@U7Z@_z>!$LBt9oE{CuG-LjH!wGs)RAh*_$`ox zVi3RcZJh+ym2Z)~@V())^Pl$?=fx4w#Ph=#Ehb zyLD6^TA5%hrd|6R*YJIJsOoG;3ai(91gf(*F!tVKZ*^NPDW(ZI5wCr3zCR@a#7m~e zYf-Eyw~_hK>S%RD?8e)I>AOe+kfD&$Nv0^YFL%A;e6{TZ6@OxHKvKXTUAppU&f4_# z0#n!ZiF~S&7R9lzK+sDw98}^)?;C(ls}ecLn*Dig`*__W?wL7X+Xq@=NtPa{25zE( z%mCR0cqM@*_IYG#knt{`lBqh|X~G&BN>bzEW4Ojbv|IQ=9&18o;gLUN|N7`DcOS?j zU;)UK=t^hqc*xYLCMWa2joOAb?b;_e!qld zgZLn;i8cpYJ-Q$|4oo;30&cu8{cGe$RG;aP5)=MvgOL%`!?iH?#KhS`Lnv-#G>u0p z#|{vqijCa06gy4c1NVE;worqpa}3#X_g|~LI`(*tirp7C#aMEp$$`wUute&C4)lC> zAHZxRBy3a(Ip&f9RCqL^J9YftoaV>em+l(svXU9ee5pLiWgTpXJpsy6KXaZl^}J=V ze@|=ce9b?e!ipL^@49O$^1%0~BSdcOUWl&ic0Sz{e1o{*m<`#^US54kz`D9(BRjR2 zYDSFxsmeoecltYi0$RXX2SIauSqPwpzm!0|PrfNK%>RRYE6i@obG(V@r%{?IQ0cad zBl;@@XUWQ4M$!;W%qfsGDp-QKeX%nkJ0p*kF)@a&b^${;>XlKJYCN6uc2Ed_JW~(H zu>D;&()PJ=uFk5AN(+2A`s_;4BzAwdf@Etw<-L7;{fY-2+?a=JU??Pq9&j>m|F@G_ z`F!%Uu=21neig>drRD5op&{6^QU(ZJ)7Nly9fRB;BR+=lcghDokY>Nv6&+VaD zz>3erPb|n$?5*Z`!A&^vNQ#CBnNO~*Pl#&peOgziohW$ebUN1!u8b1m6pl4(%ha`KNvri$yyh96~{c3#4Z-lmFZQ&Y+3 zz|%eSr8v=Vt}Pi1i&CEtj4%d5uBdV!umX(E!xcaAQi8HuU80!+`Wujm_s9=uX&tkF zwRP!v_EY*puMnb0-6L04maer_JERLK3h+7OEdnmCT1-yyO4Mhe2%Jco;zp|yxVzrY zjuOm9kjqBZ3)}6$SXO3k2Nw)u7OPjri9qkWMMZXgAb}nSP}iz4R{#f5(Od;5kl4TQZxb7N}+2GXcDHbL73$E3uv^sy+Gmv?*mH)L5H z=W&zF*-j8Cr;_p75HW?IGYSX~Gm8!za_KpKjYYfr2>Qc^CqB8A%mtFa*1Q3+<%D&x zRuHg|N1&QTsupvQ;dv!lKzqt+pO`bz+T5*YbTFu6ht0zLq=>gM7X4r6sm8cD8>Tor z5#Lp9Z_Jinj&JIdwQM;qZCI1WhhXkWIZ0s1M=NumeSri*e`K_V|M$bv^_|AXRDhUG zm{mTQ>g99mD*j03!zL}t1rq!^`r%m6sRB@gR3y0)2;>#!BebT23}agEGQ{_;{aFT) zF?Kg*dMCEijxr(G1G<%2#j=qwhBuEceMN_fdH~X@+`g;sI~>gk|M$pk^IkzvZ3!b` z_$N5sKBfW8I)YH>q9uq8Y;I0mraz?IFZ{XjMStf9ah^JM=s^>ve!~Hid`yJ%Y(a|ri|>GP3~{W$ZeVHQbssSF#{9lQ=!`7 zJuO4djw2X?$)@w-OJ=0XMUuIfQhue**(Z$NgyoWD_$t#fD~Pk2lMGSTJmDD6xs@43pW`Y97wvY)QxEnY*}`jsa^Ka({i z+CEH#`Z>9udKj6ES#yB9mI)k~xoUY6VXH0*yY~`Wa^#3)$c)cOFX1dJwr0Bs{4$tjW{^_`&50(Scmi2PE9JOYJzTvzVC*C&i6|M|yu5@_|fFZqHwEVXw%~6o+nvYItkFJLdb8hnNtsb7 zXUFwE)G6dpoM*ppSQ@H}KX`QuG#Qo+aOGedFdGbE;FI+yY=m2pf+z%&0BjAf?IQn65ijR(&D89zIyNND&dB3VBn<>RJPG)L*=L{oA|}Bg6Yr5k1}>Uc+)abQ z{F4k}!{l41N$$k4v4*%Dxe>?ct(|_S;>bFT@;wX-6sC;eJDgyKA@&ZAZv2)6vU=8C zTH=z9UsiDtY9Xat(`fyPnUwr0w`-1K(0Fii{1n(!M&yXZ+n81uc$_*sj?=iXYIE-6 zN8`T7X4?t>4Xw8-u)n@`?$^j=O7Ow;^kX+&%9^nqgaYtxZ*`FE>A9n>d@UKVKpKp;j05Cv~vilwVG|*0t#= zY0TC6o2wFAz3?`v%K=KI3By#QY~!tWb^Sr-AA`)g{6~TX2*wNJ)FUlAeWr}vzyGGF zaWtYS8DS5T@1r<^iu+_13~zLvV;h#XJU*<4pl59W?7=ekFRpJ#g_rNzV@!Gn)y1YN zu_59F<9r|sKF4KW96|8hf-}t~y))D;N zON)W%^ph{#=jj+aav(L^Lu;E<&88qT`FW;2g(Og>+Tfv6^Ze}*l>ZICULV1KgTSER*>7wV11_LHSihq-_>{(fS67?uSoXb+qP-vUfTa3yjJ zkZdl(76@V<;WhonjGB?5pKyATu8m3>$-qnf6^30{3dwd0FIihpuu4OVD@!8vK$alx z|I)wvSi1nd*9J8+Q-*2Y!l)<;$&@nSlEE z4#E8PQ@?_w0Sx0y7-mAlpt=!3K^>HKi@)&JjM>t+h=Jz8TVKo-H4w3>wt{RCXh_`| zCF#q+>^~gL&#g)h_6g3+j!?}XZHlQF>q@%bH$y!x*xA`sRURAZ{e#K;iZEfXB8178 zarBDwp}AbrOww8Dr7JZ-Ck~#;rrVX1+YE#1c8oi_Yd|aj{;;Q#ffkOf;IEay4v}m) zGq+NlNS~|z^4%Vcg{aqz&qGGEgSz&lu3Z;uKT6o*FibHFlPM1F_MstmTyt1ngt&?&X-z=OrF57b(q*?S={O-7Dtc z6Ih9g=xh(eZ%+*k28-uJ_XD?}9$dm9W9k5d9H<8d2JZkOS9uT0t9~whR=KKL$+v*Y zvDr?HFSuybi8Cb@BM00oZ2Oz9Qbvk?t{{o8naQJ{UHZ<&FDJvzVhQX?Ath^_{O!dm zaZP>FmNlU4WYeO6@+d@{nA=fLib?b&R!kZ3rm*_|OxE76a7(nEG01DKDrtbXyklr< zMxPaB>^vO$H!B+A)JwL}K{A2qa@`iwYFpZ11pI&z@ zFX}HGV+noUa@WOkA*7n~i8fYIYvw=~rdEZyvu_tInq0V1LO(MauuU-I>H@3DL-Ed2Wf17zm+u;A#dq=?f7V;?r`ga zb;&aDgcf^%VQE>Xd0Y5kg=|dm@T@YzV5c^#FunM#@xo%+NMjFhHf_@%UssfmsjKgj zANvOG*6YTuO|_F3M|=HIl+}A$I@wxjE5bYqj zR&A0A{HfS7(Cj>Um>AEn5TaO7CpKZjo2az~oLL*5KI>RXG``9o5VC!0At&@A0LPOt z{tw5a>F!|j?P@!_wAAT0;9>taHa%$YqRrW^Cn+q6wWs?IB&!7+zbFY57tEDU0aTwA zTEZW8a3kJ&BQ5al*^p90&&YnU3&LNxpKQ!zip{|F!d$G%JfF;4*AyKGJ$$0_rY&P)u16` zlRP4CJ{{s}u#_ueFswcnF9(!nBqZOyl{2%88OZQkbOouCEGm*ZEIA(K)h})BVB6B1 z7R-&jF8zvYk_t2p*G$YuIk!)j0z`^O$c7)ns@o-0s|*7GjYG7m|8!-^2pnZYFc5jtGBsxIJlIylS5=guj3M z%rQAd4k@2|Zl6f$AY~BeeZuOr%6+BW6_GHz=Bn9hhE!po-!dAKGDCAX0n1X4ui zpk04)lM%92wzQa`b2z3zJK&VAtv}dozBCn$L-Z6w9}vO$D@*iNY+lc9 znyftY7#|FqT>1S8sdps7HA!t>OoPSi_-D_Ank;l@&d__T_?lI89*Ck*y)@IrnhDr$ zXWOLHY4+a8v*Q;o_M4~VZS4g5$*^tXn>Lh$vLQ1f=G{V-YX_!pFRBOet_J_*~WWZ7Xp53d$#@`l80xSaswhu6o1R%$88}x%&;; zfFv?8HQPg&-6gN5Tgbh`d#f4au{bF^G>+TyZ*p~UXc(up0&?B4P6)_$)^e044E`Xp zYNd}merF_g0?R_b4fU1GZPM)iG=5(dKACFm>M-0_i6>-Rz0m|-|2`=PxgQF7?a;VWPa;MAir>WU67$k$p zAyG)QLl4fwF5>YPzCCR(yqj=LSC4-Bw$a+knPNOU;;SWIAqBlA>_}ooKP!X@8{BfQkldyT*ioS&q?Sj?F!8DgJqMU_Fn> zhcG&Bw^f%<8aqR&*<&nNLm;H`rFxr~FLgaNA73q7Ge=0;7Bp`+sn94Ve30TcU4uRZdEAfToPKcdulHPuXlR0M%dog22ty+8xE9TJ$R$c;MhX z^|5vZ_VeP|Rnq&mAUFEi0N;5qG-if;ATbzs$Fu(j1WocjQqjwVxZaF~^FxN+s%45U z;y&S$z7DE;(;4U>^->LRU@aIOd&pf0wf1(I1;Cbf4~k2nE>6{7`IHgn(^se(W7-G4 zn}24mpNastCV_}7 zO2P%@O{0+gV)^5HJV}LT{OamLAU+0Z6IhHNvTJth9P_nW_jA9gy0JA=mwU}Vw58|H z%r@qF>EzIBCv z0qMi9Oo)wh`Y?>4;JEt{-K8R!f>26IxmwZ!y zxa(g6-^_Mg0}_x}DQ^)mx2(Vk_V$r-_`W6;_)ju2Fu~+uylhN7nA^Op)TeRzQC%|k z)>;&*Jqs0+Za;`0m-1_ks0LBrre9BM*bC7wqvy%8 zyTQU*!)h{FHm3^NN7EPN-Sm3+I9HNBDEx$|h)CEYraZqc3Jv4gGXZk)sK`|i>1}jd zpKn#$k=s33zwV3(c>A;jd|tr_$jd#Sb&dIGV5-`^NnVk89T)gyx53Ch9WHASGfQtV zIcJjpbPLK~G>=zY4vlbeNH-X6R6+2`QVfQ@U96-93ZJY5{?w#sEF5Q(7F(4UB$6(T z(G66OepO7f7maTs_hTL+VELcO9%W|8idS&Q%O&qldR6C(zjGZNJbt$phWBb{NHwYk zr{R`~t5v1&kH-7Lw1Z*rf=Y%QAa+uS4 z*I4$>r3taB1nq<^wgwaUx1*OEJGkh&L(8(GonNtuaI@KgXMIT{_=}WfXih7i$4@9#0R~cB z49I&ot-mf^Kfb+lU+`rA;jl#A{K=KwT{R9jC^3lapu_}t+@qae?&;>n z&t}8#%*iFj!*a)utn@*~Vf%yubjSb zP-D1o{Ids$*vu?a;uA+@==Ys@QE1xM7ND;$l*pps6#JE-6Ek6UN9LGyOHJyb%sM~(a|@`n{dqG4^;Qum-C;QloQMsy+p0W3Y~6J1)}r(H zKH#?>`pd3}-YW|donLg*iIb7%RzNm-Gayfs^op&za-o)-w zcC^#HbiFpYr>79?*N_fM_^Ok@0xgZi@tMWCFd8aQO|AI2s-J6rX-d}S%x!FAQLaU}WpZXI9G8+w^yS-oqYx^gM_!R+@=W z9iQpvosz8ZZ1hTzK@5+|GsHPPewIqrAxAY=4B1Z!@5IJ`G~P)5@SkE~Lz{XW`On3( zMnou=kICQHD3Q1l+6yVMb(&S#{rRnLA) z>!NBU#rQNoC;s=W@Juwau!C^<>z6 zptm9R(z(k@cvF7fpwlpJiEo4*J$yPwmD_xEw_*P!;)o=wjEYNMGZf*y&# z-eHYlX~)rk)8b`9GRQGIT61g65olg0==*I)ok#uBSk`j*kz*&zMWmGg=LPG>Kp(_Y zz02e;d(Wi^DTcS!f*m<0anyd2KwpXb@G|+?3gG8mIW4A72gA^@*FPzoO#;1EyUlUo zA%%P6ResjB<2?9tnCi?gV2MVf3a$&CSKJ##lbK*Ze*r=7;e(4nr_RvC zr1E(kDHAf?#qv3n7U=V_>q@&W1o}ok;Oy8*rh-V&AV13p^oj^4+<5p9Xcyz^?48~K zQfVI~e3e+Wf!3H5v4Dr)iq3FpR^;DjxcTn|{++--2>m~DiG}`DojuIl-2*BX#2c*B zc0Cw{q<{iosem2kD8Tc{qVMQk7`y=VkwlBdZ-5WE`0w~On6HC{?%uoi0KuWs6M6Tv z^^@D^P1tFJ7SKJl1DKBGx%ZcWhRM@rFZMftNqQfxocHHLpoPl?7Mx__|wcV+&Wi+`r_pPTs8<^0b@{tFL);OYN%X!P^sY#a|+!ZY)}`@kQgJfo(p LtyKK*>8t+*siA2U From 1b0dd3b07cb5e56d175adfb611150ddd21dd1a66 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 7 Jan 2019 20:07:04 +0100 Subject: [PATCH 131/243] version bump --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 5bf8d7c8..d6eaed9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.35", + "version": "3.0.0-alpha.40", "lockfileVersion": 1, "requires": true, "dependencies": { From 1370202c0ed6291ecff5eaad9e516cf6686e5938 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 7 Jan 2019 21:29:15 +0100 Subject: [PATCH 132/243] update eslint config before test --- CHANGELOG.md | 2 +- package.json | 2 +- scripts/test-eslint.js | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97b21b94..7177e808 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.40 +### App Framework v3.0.0-alpha.41 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package.json b/package.json index f133bdf8..a8c5a205 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.40", + "version": "3.0.0-alpha.41", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/test-eslint.js b/scripts/test-eslint.js index af2e0743..1b4a2e6b 100644 --- a/scripts/test-eslint.js +++ b/scripts/test-eslint.js @@ -12,6 +12,8 @@ const appConfigFile = path.app('config.json'); const appConfig = fs.readJsonSync(appConfigFile); const configFile = path.project('.eslintrc.json'); +if (run.script('update-eslint-config').code !== 0) process.exit(1); + const scriptResult = run.silent(` npx eslint "${path.project()}" --ignore-pattern "/node_modules/" From 9f028407c48f2ec47c2e39bba4797ebd72b32076 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Mon, 7 Jan 2019 21:30:07 +0100 Subject: [PATCH 133/243] updat eslint config before test only --- scripts/postinstall.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 9656759b..1aa48ed5 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -6,7 +6,6 @@ const scripts = [ 'create-app-folder', 'update-editor-config', 'update-gitignore-config', - 'update-eslint-config', 'update-package-config', 'update-jest-config', 'update-license-date', From a18183c10d1be46eba08a511b5bd16ab88e546df Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 8 Jan 2019 00:02:33 +0100 Subject: [PATCH 134/243] use icon fonts, add app.css temporary --- CHANGELOG.md | 2 +- package-lock.json | 12 +++++++++++- package.json | 4 +++- scripts/update-main-file.js | 2 +- templates/app-config-schema.json | 14 ++++++++++++++ templates/app/app.css | 0 templates/app/config.json | 4 ++++ templates/main.js | 4 ++++ 8 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 templates/app/app.css diff --git a/CHANGELOG.md b/CHANGELOG.md index 7177e808..39274eb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.41 +### App Framework v3.0.0-alpha.45 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index d6eaed9a..8d87e7ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.40", + "version": "3.0.0-alpha.44", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6223,6 +6223,11 @@ "template7": "^1.4.0" } }, + "framework7-icons": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/framework7-icons/-/framework7-icons-2.1.1.tgz", + "integrity": "sha512-rFNb/UZyOsiMN5WOHLoTTjAOa+co3ofrfkwBahpuXiF/lpJsg5aNKTiXVLw/Ux3N2eYS7gLDUj3zOq3JALGJAQ==" + }, "framework7-vue": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/framework7-vue/-/framework7-vue-3.6.5.tgz", @@ -9792,6 +9797,11 @@ "object-visit": "^1.0.0" } }, + "material-icons": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-0.3.0.tgz", + "integrity": "sha512-nqKE2/yoiTJzoJ8Lw5SzJCDrNkA3hnJ8v70MkCwuA8C1Cayi31Azee1sloLyBAjOUtbctAC66p7Hh8Zow+rMrg==" + }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", diff --git a/package.json b/package.json index a8c5a205..a7879b73 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.41", + "version": "3.0.0-alpha.45", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -29,6 +29,7 @@ "find": "^0.2.9", "firebase-tools": "^6.2.2", "framework7": "^3.6.5", + "framework7-icons": "^2.1.1", "framework7-vue": "^3.6.5", "fs-extra": "^7.0.1", "ftp-deploy": "^2.3.0", @@ -36,6 +37,7 @@ "jest-html-reporter": "^2.4.2", "jimp": "^0.6.0", "json-schema-fix": "^1.0.5", + "material-icons": "^0.3.0", "opn": "^5.4.0", "parcel-bundler": "^1.11.0", "parcel-plugin-sw-cache": "^0.2.6", diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index 8876fccd..650747eb 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -15,7 +15,7 @@ try { // Replace paths const relativeAppFolderPath = path.relative(path.cache(), path.app()); -const mainFileContent = templateFileContent.replace('./app/', `${relativeAppFolderPath}/`); +const mainFileContent = templateFileContent.replace(/\.\/app\//g, `${relativeAppFolderPath}/`); // Update main.js file const mainFile = path.cache('main.js'); diff --git a/templates/app-config-schema.json b/templates/app-config-schema.json index 3f30cbfd..b13bfbd4 100644 --- a/templates/app-config-schema.json +++ b/templates/app-config-schema.json @@ -27,6 +27,20 @@ }, "additionalProperties": false }, + "iconFonts": { + "type": "object", + "properties": { + "useFramework7Icons": { + "type": "boolean", + "default": false + }, + "useMaterialDesignIcons": { + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, "pwa": { "type": "object", "properties": { diff --git a/templates/app/app.css b/templates/app/app.css new file mode 100644 index 00000000..e69de29b diff --git a/templates/app/config.json b/templates/app/config.json index 2d6172ba..4cf8ab38 100644 --- a/templates/app/config.json +++ b/templates/app/config.json @@ -6,6 +6,10 @@ "appID": "", "language": "en" }, + "iconFonts": { + "useFramework7Icons": false, + "useMaterialDesignIcons": false + }, "pwa": { "buildOnBuildCommand": true, "openInBrowserAfterBuild": true, diff --git a/templates/main.js b/templates/main.js index 08f9877a..eb10d625 100644 --- a/templates/main.js +++ b/templates/main.js @@ -4,6 +4,10 @@ import 'framework7/css/framework7.css'; import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; import App from './app/app.vue'; +import 'framework7-icons'; +import 'material-icons/iconfont/material-icons.css'; +import './app/app.css'; + Vue.config.productionTip = false; Framework7.use(Framework7Vue); From 2a7c6d5f5b18f483649198c4b44c8264d9c1e68f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 8 Jan 2019 21:12:21 +0100 Subject: [PATCH 135/243] remove app.css file --- CHANGELOG.md | 2 +- package.json | 2 +- templates/main.js | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39274eb0..fb80492e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.45 +### App Framework v3.0.0-alpha.46 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package.json b/package.json index a7879b73..dc6ebd07 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.45", + "version": "3.0.0-alpha.46", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/templates/main.js b/templates/main.js index eb10d625..8751efe3 100644 --- a/templates/main.js +++ b/templates/main.js @@ -6,7 +6,6 @@ import App from './app/app.vue'; import 'framework7-icons'; import 'material-icons/iconfont/material-icons.css'; -import './app/app.css'; Vue.config.productionTip = false; From 5097b751b786d9a9f2f06e04187651dde459bec2 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 8 Jan 2019 22:10:11 +0100 Subject: [PATCH 136/243] improve cli closes #858 --- CHANGELOG.md | 2 +- README.md | 6 ++++-- cli/app-build.js | 9 --------- cli/app-deploy.js | 13 ------------ cli/app-dev.js | 9 --------- cli/app-test.js | 13 ------------ cli/app.js | 51 +++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 8 files changed, 51 insertions(+), 54 deletions(-) delete mode 100644 cli/app-build.js delete mode 100644 cli/app-deploy.js delete mode 100644 cli/app-dev.js delete mode 100644 cli/app-test.js diff --git a/CHANGELOG.md b/CHANGELOG.md index fb80492e..e40639f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.46 +### App Framework v3.0.0-alpha.47 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/README.md b/README.md index ce847cd5..b34c0751 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,12 @@ App Framework 3 is under development. **For production usage please use [App Fra ## CLI Commands - `npx app test` to run all configured tests + - `npx app test eslint` to run ESLint test + - `npx app test jest` to run Jest tests - `npx app dev` to open application on development server - `npx app build` to build application according configuration -- `npx app deploy --ftp` to deploy the PWA to any FTP server -- `npx app deploy --firebase` to deploy the PWA to any FTP server +- `npx app deploy ftp` to deploy the PWA to any FTP server +- `npx app deploy firebase` to deploy the PWA to any FTP server ## Update diff --git a/cli/app-build.js b/cli/app-build.js deleted file mode 100644 index 4026bf23..00000000 --- a/cli/app-build.js +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env node - -const program = require('commander'); -const run = require('../scripts/helper/run'); - -program - .parse(process.argv); - -run.script('build'); diff --git a/cli/app-deploy.js b/cli/app-deploy.js deleted file mode 100644 index ebd2f68f..00000000 --- a/cli/app-deploy.js +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node - -const program = require('commander'); -const { execSync } = require('child_process'); -const path = require('../scripts/helper/path'); - -program - .option('--ftp', 'deploy PWA to FTP server') - .option('--firebase', 'deploy PWA to Firebase Hosting') - .parse(process.argv); - -if (program.ftp) execSync('node ./deploy-ftp.js', { cwd: path.scripts(), stdio: 'inherit' }); -if (program.firebase) execSync('node ./deploy-firebase.js', { cwd: path.scripts(), stdio: 'inherit' }); diff --git a/cli/app-dev.js b/cli/app-dev.js deleted file mode 100644 index 1c433fbd..00000000 --- a/cli/app-dev.js +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env node - -const program = require('commander'); -const run = require('../scripts/helper/run'); - -program - .parse(process.argv); - -run.script('dev'); diff --git a/cli/app-test.js b/cli/app-test.js deleted file mode 100644 index 3ac72e64..00000000 --- a/cli/app-test.js +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node - -const program = require('commander'); -const run = require('../scripts/helper/run'); - -program - .option('--eslint', 'run ESLint test only') - .option('--jest', 'run Jest tests only') - .parse(process.argv); - -if (program.eslint) run.script('test-eslint'); -else if (program.jest) run.script('test-jest'); -else run.script('test'); diff --git a/cli/app.js b/cli/app.js index 0da4984c..d282b256 100755 --- a/cli/app.js +++ b/cli/app.js @@ -3,8 +3,10 @@ // Import modules const program = require('commander'); const fs = require('fs-extra'); +const { execSync } = require('child_process'); const log = require('../scripts/helper/logger'); const path = require('../scripts/helper/path'); +const run = require('../scripts/helper/run'); const { version } = require('../package.json'); // Check if App Framework was cloned and no .enableDevelopmentMode file exists @@ -16,11 +18,48 @@ if (path.project() === path.framework() && !fs.pathExistsSync(path.project('.ena `); } -// CLI definition +// Define program program .version(version, '-v --version') - .command('test', 'run one or more tests') - .command('dev', 'start development server') - .command('build', 'build application') - .command('deploy', 'deploy application') - .parse(process.argv); +program + .command('test [name]') + .description('run tests according configuration') + .action((name) => { + if (name === undefined) { + run.script('test'); + } else if (name === 'eslint') { + run.script('test-eslint'); + } else if (name === 'jest') { + run.script('test-jest'); + } else { + log.error('Allowed names are "eslint" and "jest" only.'); + } + }); +program + .command('dev') + .description('open app on development server with hot-reload') + .action(() => { + run.script('dev'); + }); +program + .command('build') + .description('build application according configuration') + .action(() => { + run.script('build'); + }); +program + .command('deploy ') + .description('deploy application to the target (ftp or firebase)') + .action((target) => { + if (target === 'ftp') { + execSync('node ./deploy-ftp.js', { cwd: path.scripts(), stdio: 'inherit' }); + } else if (target === 'firebase') { + execSync('node ./deploy-firebase.js', { cwd: path.scripts(), stdio: 'inherit' }); + } else { + log.error('Allowed targets are "ftp" and "firebase" only.'); + } + console.log('DEPLOY', target); + }); + +// Parse program +program.parse(process.argv); diff --git a/package.json b/package.json index dc6ebd07..fec90fcc 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.46", + "version": "3.0.0-alpha.47", "license": "MIT", "bin": { "app": "./cli/app.js" From 4edf9b3f334d39885d2806bc3f3c8112888df57f Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Tue, 8 Jan 2019 22:10:34 +0100 Subject: [PATCH 137/243] eslint fix --- cli/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/app.js b/cli/app.js index d282b256..df82ad0d 100755 --- a/cli/app.js +++ b/cli/app.js @@ -20,7 +20,7 @@ if (path.project() === path.framework() && !fs.pathExistsSync(path.project('.ena // Define program program - .version(version, '-v --version') + .version(version, '-v --version'); program .command('test [name]') .description('run tests according configuration') From f9832ba10c004f4d5c90f593f82f87ea8d663ddb Mon Sep 17 00:00:00 2001 From: scriptPilot Date: Wed, 9 Jan 2019 18:10:59 +0100 Subject: [PATCH 138/243] fix for windows --- scripts/update-main-file.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index 650747eb..f13b1959 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -14,8 +14,8 @@ try { } // Replace paths -const relativeAppFolderPath = path.relative(path.cache(), path.app()); -const mainFileContent = templateFileContent.replace(/\.\/app\//g, `${relativeAppFolderPath}/`); +const relativeAppFolderPath = path.relative(path.cache(), path.app('app.vue')); +const mainFileContent = templateFileContent.replace(/\.\/app\/app.vue/g, `${relativeAppFolderPath.replace(/\\/g, '\\\\')}`); // Update main.js file const mainFile = path.cache('main.js'); From a3f2767dce175a3260dc2e5f8faa7151d952592b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 19:35:35 +0100 Subject: [PATCH 139/243] splash screen hides after F7 init closes #840 --- scripts/update-capacitor-config.js | 5 +++++ templates/main.js | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/update-capacitor-config.js b/scripts/update-capacitor-config.js index 9c804b94..e3b6a5ec 100644 --- a/scripts/update-capacitor-config.js +++ b/scripts/update-capacitor-config.js @@ -11,6 +11,11 @@ const capConfig = { appName: config.meta.shortName, bundledWebRuntime: false, webDir: path.cache('web'), + plugins: { + SplashScreen: { + launchAutoHide: false, + }, + }, }; // Update Capacitor config file diff --git a/templates/main.js b/templates/main.js index 8751efe3..55b477d7 100644 --- a/templates/main.js +++ b/templates/main.js @@ -2,8 +2,8 @@ import Vue from 'vue'; import Framework7 from 'framework7/framework7.esm.bundle'; import 'framework7/css/framework7.css'; import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; +import { Plugins } from '@capacitor/core'; import App from './app/app.vue'; - import 'framework7-icons'; import 'material-icons/iconfont/material-icons.css'; @@ -14,4 +14,9 @@ Framework7.use(Framework7Vue); export default new Vue({ el: '#app', render: c => c(App), + mounted() { + this.$f7ready(() => { + Plugins.SplashScreen.hide().catch(() => {}); + }); + }, }); From e7da5638ec71aa748795fd2aaf530f57346476ac Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 19:59:53 +0100 Subject: [PATCH 140/243] added demo to the main repo --- demo-app/app.vue | 479 +++++++++++ demo-app/config.json | 69 ++ demo-app/icon.android.png | Bin 0 -> 50633 bytes demo-app/icon.ios.png | Bin 0 -> 50546 bytes demo-app/images/beach.jpg | Bin 0 -> 266372 bytes demo-app/images/f7-icon.png | Bin 0 -> 13643 bytes demo-app/images/lock.jpg | Bin 0 -> 227827 bytes demo-app/images/monkey.jpg | Bin 0 -> 155956 bytes demo-app/images/mountains.jpg | Bin 0 -> 79207 bytes demo-app/pages/404.vue | 9 + demo-app/pages/about.vue | 12 + demo-app/pages/accordion.vue | 78 ++ demo-app/pages/action-sheet.vue | 128 +++ demo-app/pages/autocomplete.vue | 558 +++++++++++++ demo-app/pages/badge.vue | 48 ++ demo-app/pages/buttons.vue | 186 +++++ demo-app/pages/calendar-page.vue | 131 +++ demo-app/pages/calendar.vue | 200 +++++ demo-app/pages/cards.vue | 143 ++++ demo-app/pages/checkbox.vue | 54 ++ demo-app/pages/chips.vue | 89 ++ demo-app/pages/color-themes.vue | 60 ++ demo-app/pages/contacts-list.vue | 41 + demo-app/pages/content-block.vue | 59 ++ demo-app/pages/data-table.vue | 778 ++++++++++++++++++ demo-app/pages/dialog.vue | 143 ++++ demo-app/pages/elevation.vue | 106 +++ demo-app/pages/fab-morph.vue | 54 ++ demo-app/pages/fab.vue | 77 ++ demo-app/pages/form-storage.vue | 103 +++ demo-app/pages/gauge.vue | 151 ++++ demo-app/pages/grid.vue | 131 +++ demo-app/pages/home.vue | 207 +++++ demo-app/pages/icons.vue | 50 ++ demo-app/pages/infinite-scroll.vue | 43 + demo-app/pages/inputs.vue | 487 +++++++++++ demo-app/pages/lazy-load.vue | 34 + demo-app/pages/list-index.vue | 184 +++++ demo-app/pages/list.vue | 322 ++++++++ demo-app/pages/login-screen-page.vue | 46 ++ demo-app/pages/login-screen.vue | 68 ++ demo-app/pages/messages.vue | 281 +++++++ demo-app/pages/navbar-hide-scroll.vue | 40 + demo-app/pages/navbar.vue | 16 + demo-app/pages/notifications.vue | 99 +++ demo-app/pages/panel-left.vue | 24 + demo-app/pages/panel-right.vue | 14 + demo-app/pages/panel.vue | 16 + demo-app/pages/photo-browser.vue | 73 ++ demo-app/pages/picker.vue | 274 ++++++ demo-app/pages/popover.vue | 25 + demo-app/pages/popup.vue | 76 ++ demo-app/pages/preloader.vue | 89 ++ demo-app/pages/progressbar.vue | 137 +++ demo-app/pages/pull-to-refresh.vue | 65 ++ demo-app/pages/radio.vue | 60 ++ demo-app/pages/range.vue | 88 ++ demo-app/pages/routable-actions.vue | 12 + demo-app/pages/routable-modals.vue | 12 + demo-app/pages/routable-popup.vue | 16 + demo-app/pages/searchbar-expandable.vue | 60 ++ demo-app/pages/searchbar.vue | 57 ++ demo-app/pages/sheet-modal.vue | 85 ++ demo-app/pages/smart-select.vue | 62 ++ demo-app/pages/sortable.vue | 76 ++ demo-app/pages/statusbar.vue | 25 + demo-app/pages/stepper.vue | 305 +++++++ demo-app/pages/subnavbar-title.vue | 17 + demo-app/pages/subnavbar.vue | 19 + demo-app/pages/swipeout.vue | 266 ++++++ demo-app/pages/swiper-3d-coverflow.vue | 19 + demo-app/pages/swiper-3d-cube.vue | 18 + demo-app/pages/swiper-3d-flip.vue | 17 + demo-app/pages/swiper-custom-controls.vue | 20 + demo-app/pages/swiper-fade.vue | 14 + demo-app/pages/swiper-gallery.vue | 74 ++ demo-app/pages/swiper-horizontal.vue | 20 + demo-app/pages/swiper-lazy.vue | 30 + demo-app/pages/swiper-loop.vue | 20 + demo-app/pages/swiper-multiple.vue | 96 +++ demo-app/pages/swiper-nested.vue | 23 + demo-app/pages/swiper-pagination-fraction.vue | 20 + demo-app/pages/swiper-pagination-progress.vue | 20 + demo-app/pages/swiper-parallax.vue | 34 + demo-app/pages/swiper-scrollbar.vue | 21 + demo-app/pages/swiper-space-between.vue | 20 + demo-app/pages/swiper-vertical.vue | 20 + demo-app/pages/swiper-zoom.vue | 30 + demo-app/pages/swiper.vue | 70 ++ demo-app/pages/tabbar-labels.vue | 63 ++ demo-app/pages/tabbar-scrollable.vue | 50 ++ demo-app/pages/tabbar.vue | 63 ++ demo-app/pages/tabs-animated.vue | 48 ++ demo-app/pages/tabs-routable.vue | 15 + demo-app/pages/tabs-static.vue | 48 ++ demo-app/pages/tabs-swipeable.vue | 48 ++ demo-app/pages/tabs.vue | 11 + .../pages/timeline-horizontal-calendar.vue | 749 +++++++++++++++++ demo-app/pages/timeline-horizontal.vue | 107 +++ demo-app/pages/timeline-vertical.vue | 224 +++++ demo-app/pages/timeline.vue | 10 + demo-app/pages/toast.vue | 162 ++++ demo-app/pages/toggle.vue | 40 + demo-app/pages/toolbar-hide-scroll.vue | 44 + demo-app/pages/toolbar-tabbar.vue | 32 + demo-app/pages/tooltip.vue | 48 ++ demo-app/pages/virtual-list.vue | 71 ++ demo-app/routes.js | 605 ++++++++++++++ design/icon.android.drawio.xml | 1 + design/icon.ios.drawio.xml | 1 + scripts/helper/path.js | 2 +- scripts/update-framework7-demo-files.js | 90 ++ 112 files changed, 10834 insertions(+), 1 deletion(-) create mode 100644 demo-app/app.vue create mode 100644 demo-app/config.json create mode 100644 demo-app/icon.android.png create mode 100644 demo-app/icon.ios.png create mode 100755 demo-app/images/beach.jpg create mode 100644 demo-app/images/f7-icon.png create mode 100755 demo-app/images/lock.jpg create mode 100755 demo-app/images/monkey.jpg create mode 100755 demo-app/images/mountains.jpg create mode 100644 demo-app/pages/404.vue create mode 100644 demo-app/pages/about.vue create mode 100644 demo-app/pages/accordion.vue create mode 100644 demo-app/pages/action-sheet.vue create mode 100644 demo-app/pages/autocomplete.vue create mode 100644 demo-app/pages/badge.vue create mode 100644 demo-app/pages/buttons.vue create mode 100644 demo-app/pages/calendar-page.vue create mode 100644 demo-app/pages/calendar.vue create mode 100644 demo-app/pages/cards.vue create mode 100644 demo-app/pages/checkbox.vue create mode 100644 demo-app/pages/chips.vue create mode 100644 demo-app/pages/color-themes.vue create mode 100644 demo-app/pages/contacts-list.vue create mode 100644 demo-app/pages/content-block.vue create mode 100644 demo-app/pages/data-table.vue create mode 100644 demo-app/pages/dialog.vue create mode 100644 demo-app/pages/elevation.vue create mode 100644 demo-app/pages/fab-morph.vue create mode 100644 demo-app/pages/fab.vue create mode 100644 demo-app/pages/form-storage.vue create mode 100644 demo-app/pages/gauge.vue create mode 100644 demo-app/pages/grid.vue create mode 100644 demo-app/pages/home.vue create mode 100644 demo-app/pages/icons.vue create mode 100644 demo-app/pages/infinite-scroll.vue create mode 100644 demo-app/pages/inputs.vue create mode 100644 demo-app/pages/lazy-load.vue create mode 100644 demo-app/pages/list-index.vue create mode 100644 demo-app/pages/list.vue create mode 100644 demo-app/pages/login-screen-page.vue create mode 100644 demo-app/pages/login-screen.vue create mode 100644 demo-app/pages/messages.vue create mode 100644 demo-app/pages/navbar-hide-scroll.vue create mode 100644 demo-app/pages/navbar.vue create mode 100644 demo-app/pages/notifications.vue create mode 100644 demo-app/pages/panel-left.vue create mode 100644 demo-app/pages/panel-right.vue create mode 100644 demo-app/pages/panel.vue create mode 100644 demo-app/pages/photo-browser.vue create mode 100644 demo-app/pages/picker.vue create mode 100644 demo-app/pages/popover.vue create mode 100644 demo-app/pages/popup.vue create mode 100644 demo-app/pages/preloader.vue create mode 100644 demo-app/pages/progressbar.vue create mode 100644 demo-app/pages/pull-to-refresh.vue create mode 100644 demo-app/pages/radio.vue create mode 100644 demo-app/pages/range.vue create mode 100644 demo-app/pages/routable-actions.vue create mode 100644 demo-app/pages/routable-modals.vue create mode 100644 demo-app/pages/routable-popup.vue create mode 100644 demo-app/pages/searchbar-expandable.vue create mode 100644 demo-app/pages/searchbar.vue create mode 100644 demo-app/pages/sheet-modal.vue create mode 100644 demo-app/pages/smart-select.vue create mode 100644 demo-app/pages/sortable.vue create mode 100644 demo-app/pages/statusbar.vue create mode 100644 demo-app/pages/stepper.vue create mode 100644 demo-app/pages/subnavbar-title.vue create mode 100644 demo-app/pages/subnavbar.vue create mode 100644 demo-app/pages/swipeout.vue create mode 100644 demo-app/pages/swiper-3d-coverflow.vue create mode 100644 demo-app/pages/swiper-3d-cube.vue create mode 100644 demo-app/pages/swiper-3d-flip.vue create mode 100644 demo-app/pages/swiper-custom-controls.vue create mode 100644 demo-app/pages/swiper-fade.vue create mode 100644 demo-app/pages/swiper-gallery.vue create mode 100644 demo-app/pages/swiper-horizontal.vue create mode 100644 demo-app/pages/swiper-lazy.vue create mode 100644 demo-app/pages/swiper-loop.vue create mode 100644 demo-app/pages/swiper-multiple.vue create mode 100644 demo-app/pages/swiper-nested.vue create mode 100644 demo-app/pages/swiper-pagination-fraction.vue create mode 100644 demo-app/pages/swiper-pagination-progress.vue create mode 100644 demo-app/pages/swiper-parallax.vue create mode 100644 demo-app/pages/swiper-scrollbar.vue create mode 100644 demo-app/pages/swiper-space-between.vue create mode 100644 demo-app/pages/swiper-vertical.vue create mode 100644 demo-app/pages/swiper-zoom.vue create mode 100644 demo-app/pages/swiper.vue create mode 100644 demo-app/pages/tabbar-labels.vue create mode 100644 demo-app/pages/tabbar-scrollable.vue create mode 100644 demo-app/pages/tabbar.vue create mode 100644 demo-app/pages/tabs-animated.vue create mode 100644 demo-app/pages/tabs-routable.vue create mode 100644 demo-app/pages/tabs-static.vue create mode 100644 demo-app/pages/tabs-swipeable.vue create mode 100644 demo-app/pages/tabs.vue create mode 100644 demo-app/pages/timeline-horizontal-calendar.vue create mode 100644 demo-app/pages/timeline-horizontal.vue create mode 100644 demo-app/pages/timeline-vertical.vue create mode 100644 demo-app/pages/timeline.vue create mode 100644 demo-app/pages/toast.vue create mode 100644 demo-app/pages/toggle.vue create mode 100644 demo-app/pages/toolbar-hide-scroll.vue create mode 100644 demo-app/pages/toolbar-tabbar.vue create mode 100644 demo-app/pages/tooltip.vue create mode 100644 demo-app/pages/virtual-list.vue create mode 100644 demo-app/routes.js create mode 100644 design/icon.android.drawio.xml create mode 100644 design/icon.ios.drawio.xml create mode 100644 scripts/update-framework7-demo-files.js diff --git a/demo-app/app.vue b/demo-app/app.vue new file mode 100644 index 00000000..93b12444 --- /dev/null +++ b/demo-app/app.vue @@ -0,0 +1,479 @@ + + + diff --git a/demo-app/config.json b/demo-app/config.json new file mode 100644 index 00000000..2e09aae6 --- /dev/null +++ b/demo-app/config.json @@ -0,0 +1,69 @@ +{ + "meta": { + "name": "App Framework Demo App", + "shortName": "Demo App", + "description": "", + "appID": "de.scriptpilot.appframework", + "language": "en" + }, + "iconFonts": { + "useFramework7Icons": true, + "useMaterialDesignIcons": false + }, + "pwa": { + "buildOnBuildCommand": true, + "openInBrowserAfterBuild": true, + "includeOfflineServiceWorker": true, + "iconFile": "icon.android.png" + }, + "ios": { + "buildOnBuildCommand": true, + "openXcodeAfterBuild": true, + "relatedITunesApplicationID": "1203927581", + "iconFile": "icon.ios.png", + "splashScreenIconFile": "icon.ios.png", + "splashScreenBackgroundColor": "#f7f7f8" + }, + "android": { + "buildOnBuildCommand": false, + "openAndroidStudioAfterBuild": true, + "themeColor": "#2196f3", + "backgroundColor": "#2196f3", + "relatedPlayStoreApplicationID": "de.scriptpilot.appframework" + }, + "eslint": { + "runOnTestCommand": true, + "runOnDevCommand": true, + "runOnBuildCommand": true, + "openReportWhenPassed": false, + "openReportWhenFailed": true, + "extendDefaultConfig": { + "rules": { + "max-len": 0 + } + } + }, + "jest": { + "runOnTestCommand": true, + "runOnDevCommand": true, + "runOnBuildCommand": true, + "openReportWhenPassed": false, + "openReportWhenFailed": true + }, + "editorconfig": { + "addLinesToConfigFile": [] + }, + "git": { + "addLinesToIgnoreFile": [] + }, + "ftp": { + "defaultHost": "", + "defaultPort": "", + "defaultUserName": "", + "defaultPathOnServer": "" + }, + "firebase": { + "defaultProjectID": "" + }, + "debugMode": false +} diff --git a/demo-app/icon.android.png b/demo-app/icon.android.png new file mode 100644 index 0000000000000000000000000000000000000000..dc136bb54d891a6c54789c3e6f8c765de8488968 GIT binary patch literal 50633 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

+N&aRh?LtsTu@^eH+f-P)nNjfDwe5DXL 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 literal 0 HcmV?d00001 diff --git a/demo-app/icon.ios.png b/demo-app/icon.ios.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd7437263d936265c30c346563e1d94653373f5 GIT binary patch literal 50546 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 z zVy7<0?8 zqGy0$=)k64-Q+4Knz`H8gS`!jq*`|OM~sfVn|835l3E3Vt$$!4;)T?Pnbo9~zWT({ z94BZKR4?N7U7r&v(8i;0%zT~^gI;bCgZ?RW{t=9Tv#te&pXT6`+l=#t@zbUPCAPmb z@7zvQL3!=WQXk&zMb@n~BzJHgk)B{uap2{ok}Yyb+?sZ$waSuDz)U#6s9L`T{2nF|a++#5(%R#5$}C@hX{Eo|7{Z{+GfCOX5REdIuXM)c{xOhx0+Zne zXL>UOtUKbqKEM5_3W&qrz`55Qe@f@xJhV`0@u2M3D?rHp{Sx(4c;`fMN#Dfk#2VIX zNCA`qdJM_{S=wHwatB4=NXj75dUaA^-T=>vrBn$BiD5rnYcicrszQ9g>3n)8%1IaYi*mI=XjLN=(3_ zGNJxZacLa88K>&A_$V~`?w%{&`;8RC$YS9g6TA%;gPAgcxvLmfA!CRHX7b7IpN<7B zbs;xqv2yJdHR=b@){f83zMRClz;j5f_$lzt8c$jKO|?#xodp)a3#Yr7)>O}J&kkfW z%rxnvKiG?adeBnImkx9p-Z~LF!AkS_a)XOYSk6mz`z5gFOVzBbzi;>P^}z7V&`g{1o1+ z=|h~9jptS(LjLiCr5VK~z0^4Js=GooZ8lUXCm{4VKIcBD6jTC6EmKU^0%PAHPj7J9 zxdRZIMWmQi>0F-=ritV64)jCE7XU?iLRfF2)n$3MdpKI!V8o&c{R@i9I74>B$)l{Lt9ICMQPteq?_ox&FynkH zZF_EdL;gy@orhS(V{zGoT=NK;3$Uu@Mt6WZzryLHXnx1gHUZ=FC*WU*A{hQP(YJIp4L z{4GtV^>d%$o_Hem8(F%>qIW^veao=8;;}q3ni0{@6PTlegLhgSD;LmBm$TNg085=A zJcRB$Xt0{?ie|P`nBP6)E7#v&;G9bX`pNI%v8Qgzcc1o`@5T(Ng-$Z9_wkP4dK@cJ zzXJV%gmk<2cJQ3_AyLZUdegTBS?85`Tc?!*@Q<4Dt~3`+8k6103clAn6oQO96nu;U zp>sFnuy%Ow*yp2kQ36z#yuK)bP5XAz;l0L=7;p1>ziV?mpGKgh;xwr_P_rBPoc@1fIZgcuO$PWqyKpa#83O@6QC=; zf~i$(AJg)WNB?mvM9TZ;6Che!2dpRl(*4W2@huP7cKCMx&)tV_IQfS2ABMB?@JsfVE%4`Ce+TuP9^<(X`WONl?8-2#3t NoWJyQp|Rt`{{haCQ&Io` literal 0 HcmV?d00001 diff --git a/demo-app/images/beach.jpg b/demo-app/images/beach.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5ad42c347aba5f43372ad0e90f393f17cc2da2a1 GIT binary patch literal 266372 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 z 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

#E$jsE~+?`@d1 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 IEb`0$*;`9$4gdfE literal 0 HcmV?d00001 diff --git a/demo-app/images/f7-icon.png b/demo-app/images/f7-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..39f5c25977bf7c82c3f285cc7947ebad73798c98 GIT binary patch literal 13643 zcmV-RHMGi!P)UHM=>=(@r(d=mGNTZ`WYG3{8;b*hS()ZbwW+x}l zs5csyt*oqECgpxm&U~%{U?n-DaIUSEPsIoY?LpChxn8f|u+r_`FtTIEo@bK>PQ{j| zP4B76$w@iq%9UR4CnRL@sS>2o!l+R^BZO-?m$n^^di`_i1lNx5*s)_R#xr00M+?Z* z`R8w*U0l4P*6qHnSF63srsFs{@KHxZaW0NL5&m)R3to?gzph<;zb;)qH8L>p>G6B+ zIdmMqX8`bw2jt;1&pfN!>%B*ge}{VRP`{1Qo5SJjdpOF{*F)(jpSb_`b3V1Q9 zT+^u4K6KXZ-4CA{^^?O6+nyYklc4_Y)~)9$2=CRjbftv0Avw;W>qba5T1pQ;E+Ffs zr1b$^uhx2bkH;_7>z%Z+a&3KZ@ONME&_nmH=l68fpZ0*->WUryozwlWBii19I1; zm%dfX{ec|2{X|M4JbEqdQ6?uH*S>B+iyPj&jpYnhx7;l!6f2L#NsaEz`#_x#qxk^E~ z?y1!4DGSK07hTkP;WgKMQ1kJ-o;n3%@`59(s-FKnWg?IePUx3*vI2Bh;19=N`qJM} zV3tmn=CSZXm&d|++_o=`jGTVn>07TGYBes#C>CQMl;h}jUDhruaoD{q(iI#rnQq0! z!UG)mt*khw&Ghgoi!kjgaO@Qv@HyZZI6+_Fh=7;*QW0`5=v{}W!K?C1on|{uyeHrD z-t>JR_zyP=^kxNRKW$GY)t?M8v|kwK$n-*@r{ah+fCS?ttAcvbqMqc{-bI!b}-E5s_=i;V*V^uDu zr;Sc8K9(_&L)44YE z6i(TbCrQ9=>iOrK{dcW;eVdiF^W>*+upE^_jFL8Rqjzioi^&oDzWL8Z)~;c*$Y^!^r8Yi0!Q1X*SscO^y&YW zYB*eJao;`#;|*!yp?vQVIP#&<{UKr0wk@UB-{CV8oaE`G1HyI2`DbjsZm``t5B1&4 z)q{dTf3LLdQYtU1s^J(JZRdz4J56U4SDO#qY`s$DUNSc4(0mMsW zBh|$RTCJ(h>l!YqpV#dzU3cq6sU?;tmBOEoi@f2$BOe-V4_u4^*L@wAde;SF-f7VOaAbgXQqq)_ZL!YBHwuEE-a+4z2%>!W4C`>I%U30RRmQ}A*Gx6 zD0oB~cBF~ylE zu2w6L7f8_KK=NXg%fj`vNKk~9gOLO4VD{6~0Z1p1Z=S;K3Pn#SQ*TN4p_h~|bTkL) zLVIB;)fPLczPOwkoo*T!pGX(~%@@+3fsStv)k zo$kxtu&}VJVt9f=^8~OppmWaL{&CHR6UaqyHmVGJ9FI^Of-*9i9#3yZ5uA;pE0Bp6 z7QnpzxNhRI>!Mw4z;PZ)e3%Ld-Evm}mSb0NFv{pyk;ma@XRD1eGUx;$3*5km<)bC= zN!D93U;N2Wt_jAyzxi*{L)U)N`rrpoO~S6RW>{}VZ`R)d6EAF!QK{C6TD$r2w2&?b z{AkHEkJk9jEfa4Y86J9r9Vo+aJdSYk^s!p^c2$bf4u%8dTrfEZxak8XT+^s+Sx#PD z>ZHZaQtHgjr^We&v^ck@@HcBS$Y$ z2-whqUwgxshK6`X^r-1XIvM#!J?Wb~ZS#&+qrM#_L9`20@O&=A83!>nF$K}D?GSP) zv$V97x^j4)N(hP?XtNVF&tjnP`g?JdL3K|TZdDcxek9|mOdI^DS9pEp&?)pX@nf9M zc-!03ORl}P!Z`G$FQwbx^d^sDbk#H6wBl7fcZ0myz(4Yi+C7!YN8WWQ2pDY~l?aqb z_b%7lldpS}Cy$RhWo;cAcz;vDkhS6>Rx)1l@PtlU3w3lli)GFh46vuHMuKTm$StY4 z(yQk+LqKm`)waf|@Gr?Ms)}j|#JS+8?5R+BtY0`_jidW{6`B~G!S+NsW+8jy>t2^$ zbj>vt%FJDNr8^iYwq3nl@`h?n%{p|(oMH`OY_Q8>7NG3S3c+A4DY%R(N!q@$u<(8r zPWYGtU5-oF4-A}l!8vE|=yjJHwo!`EAM9i?9cYTNEQq;!O-~kqd#iGs#e$DhF`&Yu zt<)>H>fi_M`aJL}oZ#1&M_bTFogDhdN<-(Kn_hkM&8fX*i_sSM?@zb9`qioP&_i-+ z4hB1?D9_5GdIMMEd>xWOz*G?=j|vB()Lmw}6P}oKr>ABo->|rN|9YK_w;p)@8Jpib zQ13O`Vs_flNZLL;s(d(Y92iW)EnVYaU1q$ROBoDbpQ87HPuacNHUL08%GK zUh&50lAv=c`Ek;L>*$BCQU@1J0K>!S<)8n26^!oue7fx|Z^^+Bn%4->#mh34kJp=; z##p~}NN?lFUpNOGN{kXO{?t{bcVnsA8p9()?}g?1bX-8bHZ*kBmhlZ&4z`mcnrXIdkj8d$f~phvK+=Xh4DoQaZXkn-0%U zr+Mv&qCFfHjMq4(7+~CR(kfyup=e(+{d$<%*YH())K4hCj~?#G4}JSYx%k|7zdLPz z>*~hmf#3iAwExflymD|qKD?0UTxFa$T+SF>h)DZK0$ zaLQ591TDF6%}25+SA6^iZ6aK)th;5b5P}P{n(G? z9TJY~J3RfAU>MGHRO;*~7iyZe@HjM#2&!DtX1D zpqwZR90F6(3o&|+;Sj7}3jY!!^TojcR*8YwuE1Wh&i z`glYz++J{+3INwAkor!q3e`vwV*jX#>lm*osW&uSt6hP-NNWPJZDQk<7>h7^IsqrA zjv`f38MWz|4S`z&8kz&WG}E0;N9SjBOGu-q58n<%TT;n`TY+Y0!dLCahraL#7`TB? zTkth6(cy%^wJe=zt7rYnM0D{BzuQe!GYbi}F&7|qYc~2dod?w5i);LLgoWz4vY8CHLetnyf`%Vtfy83z; z%`f=(|2}QJnD-KLy7L|HNVDJhP9+z8IqcA)n{5!f+X|ia>}w||P2H>vTIVeItR=#0 zuy&9{NE!aEdgE0$jtx{l!Keaq+NRMf843H2U{!LQU*5CY^4^rb>t`eMYQio5rx#u%8(es2NIr-2#V7}-7#=wN&d!<@UcwWB<>RzyYiWvl$)`S* zd5OvN9e1R=f8|%Kvvm-x-^s{{#n}O%4zMK3;L{d~`mln+?R@)!5#sjnjfpayE-Yyq z85-h;N=_aKHx3VD;wAV1(BMVZ_If`$gAHMD|n&_(nL)0cGd0?y7$>x!>SlzS~v8+7e< zYmyki$Nt)~Vdyd%)LuDqb%f-ej$mM{A>cA)g;F?`GRq4&PO)Q@lT1Ud1Bb#(*HpT; z>84Iiqo%7nyvy7j%k4qyT=;7OCjQ9pPvBJ$@cSA~tNJ+_38!gG8|kihzBA40^&RMf zpUY84PLxX?b#hYV_5*emy~t_X&>l$3x;&spovABd)r(eBSM?lTZOwt^Wy*3uHjWHm zmW>vqFe6eh>30To1IgDVf>QJ`Q*b#50`n=!(GMiyJE@6L)6=M#>&>Qxu5MWB+Tpkq z_{u{k=LJsL9D{!!gOT&kPcQtP->D$G^{iu$?&wB`vaZ-&4iF7M=`OA5?Z~cD(S>>i6--QB zuL2||yhyi38hQdqn%B+3yMFnXUG6`Hqku&jzQH?!6*@#)8(KyEr1E2%D5rkqS_i~pqyk990!2*YAjB-U! zSqHqy-O!htj~fcToSB^=*$v(9Z+B9suIrkWMQ;QuCyNI>qwccViB6$rdhXxqZKL{Nvo~o2ig2zdv>?NL)EfMN zkzze^#r3QMd`b1@Qd((g#AvZA~bFAZfHb|H#Ji9bd&(O;|t$+fJFq4!J(na z`smPLwY!2@IGJ(?%5D*$z+#c6Jrs0M)EUND@ z*%{O;Jayfl4n3qN>8xM;#kBeLuXmZYJKp~G)SaHr9Y|1Qk;0M463{Tt?kJ29%F1&? z?tqkm`-rxv2M^_zp*&=OKcH(A?hvza$@YrBWP>x%Zco-Zfk?vH9Igjr?~rgqR=@?9 zGgUPu35K(=D~2Pu%#~1c1RTm@q8*9Zv|GLxc~wXlWBH|;v&tE{stZqTpW7qLx^1Jt z)K*e+^XBw|zNzZrKmF5m_=Xz_HEeUo!3iYm6V5Mfb|${)!v!yJO-C?1L#C##X`O=A(k8fV7(VN-3k80nUj;??Qc?MHvBpIO!vO;eXA&- zg`J zs~FgDF~BhngxYZ|i7Zbzt7YiJfjBE12YwiBdhzV>o>h_Mkr8EZb$DGVFeI+$hkS0p zCC|7wf zRUY{0N^-p~2WHxU_3=UpronODQ#z)5e0lqSW+M3!j0i$CUQpvC0}D? z$HoXTQV3DLEav_65ft$9h!RdIM=-NOj1=)kIVnp{q6|+_gXZ86Sb}G$qM#`_4e7E% z&&FuTNXjUj{{BDq0!?k|>o=!`zx=o^JnOn`lby@MBy_|9(AIQ6$VO^BN2q!Rqd-0(xVn01pIg*{JO5}FD>Oqh26gX`~Yw9UvQ?xCD$NE(G z;v16d$_esjy+CqsVJAH+JtY#%aU6KY)hPs4v}Q*z2Tt|jv9$eP|8B16yzjq!G%elp zP3g?!r+2P4)Y8nlk7B@!(Gfg}HD&9@2r9`X;RUYS6}+}Ey#v$x21s#PG=8Z;b@QiJ zDR3RX3ae=vpbmn@%h&{*V?(o@4lgc_t$9(7sRzf~dBu?sW3+p)w`y6q-={4&C`ho7 zgfo$e5e^;0Uri3Cc*6%c&%6Z`atV|OmwL;o*Hqpi)xvHk$*H!_ zM(cg55$$L+%|uWtyNVr%4;!HCcYKt+k&z-e*&_zteR`X|@QbM~V9upe$e`W6Tj@HQu7!l%wO?M2&V^piabCJCKUEsM=c(!wYz=#}%q2Qk)Xs@joG z*XKLS{yqof9Q1sg3RABY;>4flIVlqY14gf4YrLQ!EcZI8rrQ_8V|86IYtLThq8wm2 zN(Nd-LQ5DZWhv2s9w$zaL~1?f`RTNO@pDm4dw%yfWjsHU5I^)T!7zfvWId2&1m_Ly zmc}QVdW&BYMT0iky{7UhItFl0Khc@Q$N?^Om!a=hQf2$Jz+?I{V{~*OpY*eh{q@dL zX9qwO;jm+DNEQYv;i-faVT*bSwxDO?-TG2$4{Lim*3j+a{6+;d<`#;VDh9jAC_xq4 zktKNU0-4N6>rW`BEq z3|HB3a7r24sthdJRLJx>7{INEa26Mrb~I<^7j~#@!7#~d1`28$t0!E%Sj{$ZaJZF5 z2HU=+K=<->gy_6Ug(*B>q>_zN#TRWzR6;plM3%a-i@~0@R0dY@fh;P@p|`6FeC%iR z`i`E$k$Bdz_{Gl%2Lh3K+ZpBJc=5LgpR#j}3*0mrZ^MRmnw@2&U9Lz*%MO@3wdtN=&5bJ@EfFUFnLa1{cLYSad=G2q1?n0_Mhy{hrM9Q-CT<5C% z^tb;Ktxo&@^M9;Z{_c9~}9NPe2 z)D?_Q!VZ-(DS}k36Y@vC)v`L;Y*6u+?*hTBq)xZCqxqVtsl$ioXLo5Jozos{>V8o( z4eDoGNXi|42M(lJc2+b=C+9lHf^HJQaUSh3a1O4jE`!7f09M*ZG$VAHy5*t3 z_!Usu6}u~NJpT(H8@y$%_^Y6VJa{4m_8bI?I)MuvK+AIL4_^52!-qXC>jS+THf$KX z3ZlFn)s)1jP3T<^?;k?)*lwPK31 z9Q4zldw=1N5%7#8l+_yedXBLDmsWqCx9?;BDb=*OFeeONmppyJuC&<^R0XTb(I#E` z(}32;mfrH8nbMsEemSOOR^-wbo;Vp>xCKJaoABU}2nu*{od-T`(T=o`IJdm`WmWS; zdFMo1JWY$T}g)pVk_IpRr)lu4v(zg7dh2lZvwvc>V>=x^d^OLG z&(60}TyTiG^is4!eR?xcDN@m@+|;&s!^BXUI=bMXc$xvPTzjn2Fd!5h>B;Sqyr_$( zVA$kQq`bO!CAd?`4^Pe9K;0wj(Db}3S(U6D4pGTx@v)-7ToxQx(`rMJ8+Da14kt%~ zCgxX^i!$x>o~oyc7KIEG4=&sW2Xs}fi%V{8Z{42K=AZfbV4Dv8ug|4kxn~uQbYqB) zyclgA<*d*Ztyf_x2cGDFJ5b6P1rrL&vhFy*GT2g}3>R{I!Xixy9P*gn;7>i;q5%DY z>4nvRy!_zY9$i=TE$(6hqpX%B7R3>53$o+fn~Ol4jv$&NXxYF*Gda z85z(iiJi;j_Lce5l2h!kI^FJ$ zmmfU12dGB~g`>x&)!iUnWkMMc0y0yCU`~dIF|^tFCeI2PX1q+nZYu&PaK#roaBYO? zb6MA&X<@OOwruO_M=feV=;c>eQ^mq}?@5CX{9l7NZdys>8@qabvaD%tMFC<8%z9cc zuwYSS;WUoihBmqEdVwR3WG=v%hV{2$+x2{-k*{^?eSu z0C2()7^}%9@jPfuJL7R3ZSmAi)U=@YYjKbrV!cGg;;gdu@nWAvqICX4;i#2d{utIX z@WFwm`G)tKuunM>*I zKrmW|7jAG$-3HK;lSu!7}wpJ)?uS9AUR!gA6BzckA8CEKYJ zj7T6U)mlSo!{tBjGN+~MKT~jN)FHHu3QAW~7bBKL&$o_}l^r83RK}Sjqq-WO&<<{t z4Y+QSYWuvzT&cDQgn57;{KzE-NS@Mio!3J*ZW{3;hoY|e;8-SHEU*>9HWcN__`RYo$di~w_#!g2MD2=HjO0-}qak$Xc{f-Nl< z_1u~m)?z)eSp;Etxo=X<_lE1H+lzlRHT>e0c2jyCv~{Q66YopN;Wv%kLJz0Y44-}* z93az4Pi&K-ZLK>a8+E5zPcD0UUwB@@>1f*qpK7h4T==0Y_PJfN#`IK(;Zr5U1X14nfuF3vNB{OZU70WR(LkRm zH*H~?%mpZXGcANMcjJ_7Pu4#IW~WJ)X1kuBHvYiuza%I2Y&85T`2byYF*%5{p_ zhp3WAmFZ;!L${;tC>K@}r?s>Ll2{z3lp(u;n$dVzt@ zv$pU0LWOO5@mlS5`O2Q}7G(CTZ7~|`MD!Lyl%wOAM%*K~Zil}*=g_Ebx^B=Hfb?tP zh3=fzojLyi2W2e3@KYsi7#;Q7l{`tMGkUtB9b}R|&-C4Wd*tKe(+LCeieroSA3S{M zBcU)k$~viR#>x@lvlJ%9_74O3w=ma91EUQEgHM@doXE(5*_d3i7tPjzi?dGTKJj9%~cS&D?T``5AqDI zqe*iqQx*FTYL zrGNNq(}P8@BF_q<5pdCq&!C>^_g{15PLkJHLU5+_DJ#|XdTkJlBKXk-uu0o#osE`fCU=Xq#n!?e`XMcZcZ`}%_ zACR^0`I1|i#XUlxDQg24gO(=-(CfNQQ)S+DQMbOr&w1`3*#@-=9svM`4&(tR4_xO8 zIyju5~r_vm|_f9lW9PZ zVYXhNl^0(|i_^?EZ%NHr{@W**h->N5;PVH2m!Zcj<(sxNG<7kH3&Zf7XAGTzafldt zPdTdF$>Lw}RVi?zgT{z~cLXu$$eVgAd~j?i4agrg-2iRq8!!iEj$D7i{v*1Gdi3;| z0fFrH`}SO|{rC~7q?DDkZIo45)F)hpi@DbdP}Lr5NXgA7%Hr>ZSu)$&%0_Qzio}tKuX;Qh!7p^9O$R4(Z<$rd zx`WkEUvTIgWu!urNAM~=?+6c#4j;MykwaI*`mxgE2IRFz7k1sZYxh+sZDF#6GFw2+ zBWZNAUJ&ND*CY_^T-c%{8OG*hMOB2J!#FgVt}mxuZ-b9raw)A&wcGUTS>gHKlV#u< z@qiEbl*?h>MVDc1Di#;>C<*6+OJKmm(GCuL;2`I@P3vCPF^dQpf$I@c_!y?3Ad;!G zqF1}M(rM=dd#=Kl7V;RU#|;Ry=Rb7xx+8~<{vm=^v_|k{g5iy08ism56hn~8i84;3 zsx!ko{;X|r60K~NGp?`;9wWdvH`U&G{%cnMHv+xQ-n{>22cwvnWx!7|GfkEs?cqRV zZQP`rfV%UG<8U$^!!KWutKAR8&{XoN8xKM%N(7P=j>k54F7wLtzz9argP*VTYw7UO zsXu(dLx*$&?(q{V?@6UygWGXTdGNb5H|L)jFiNbqwB`9by9+~jG%Gv& z&37zOTG0(eD@>cPj8|y<=8A$uU&a#yFZw4gahm?5Gsz3??oDRX!=Nzw9 z!sAga?fwHt_~;UAA#&K35u75xJslhpbd@}ni%G^09Dt@*yGM!S%+1f;{6KTdZ=|#< zGkTo!NeAQ=-}uJT*G5L({EF8-=cWe#30QxUA}iYFa>thKF4yMV6en0U;C>@ZPugrq ze&Uv`rcEIbo$*YcTV`ICe+h+{n=hHY zPnW7Em#o{#p{8`n?Ck!#Zrk%l?W*=$+vp~C5_7KDm4y{E1rTe(fI+!eh0&05xHa%h zFA{y}VEARPs?-|Tbz_>+3(@&ATkwK4Za{t2q1Tal6&P^5Lte^bo7#R^!f(?E3J2?9 zj9hll7Mwpu1hl{iOs?T{4x0PuOW9hftd~0W-SM3V-iXhHdeRB)Pbs}*|FNC--2U*7 zXoBK{A(>WI!N?9qu_&W>aSDORJrBbOUas4?62wfer-558OikT>An|6&@a}J)dN)}Ybbxc2{%sRl$Oz7yz4u)D|ih(MoFEm7#z@cne0hjJE zTD-nk{~RFrXxg5-{q6^U^p(dJc2Yl;bjksN`GvcW-gfu5cD-q3r8{L|QqYE%JRA

OV$?L77kI?2B?;=Y<`2=&qV>mxy<>RZH8?SkasHoish84{K<)^RCMb zkp-XCU|T1(A;XKfc#P^*(M3Ijfdq$>a4sps@>JyD2;kA7_N=GQWu&a3C(tEnvodwt z-MilOvIDcX1?*JvCln9_T)21oEBD;K`v(-1eHN&0L?CjHrMXtv9?sS;TNRko^%ly|@Uni$$$!|Aoo-^BYbJ0*2J+yP z>&PDA;#CVcJ)e}b(ylss8Q+f1IspM6EJek6&>Jegn#%XxvE#uXxah$2SA_nA(i08{ z(ikb<`R2o~)$Nk|Wkt2kvq3gW>~V;ajR`}QQzv*1O60}h<_lK?Qrk&Dz{^4D4^BgY zIc=LB%MNwZ>jO%IaNIS5e6Np?}r zW5i%I@S*Q}F-T6$hwoe$JbV))1_xJ9Iw$;S9%Ijo~ zP7LZ^SAH@`GrDf1d9jmdR#Fu=3!t2}3CW^TUiwufJP=@VEp;L@L-bUFbaa5%Y}L<8b#*>-L|+Qh zyQsP@v~1{%tGuQE0b+J`UT?azs}W+|gqzjTS$I{jqHG&_NAA7v;j1p(b5vL0dyB?T zKBMbArRh044qf-{uRidy<@v?yZB}s@(-^@3hC?`HU#a8p4C`)tp`n~QJMYfZl@J+e zF;$tbU6x0fd8<7KHp^hN)%6&5Y)e~@jJX@lh>?^SrDa_iofz?dEWmCJofrxHNt>(( zIs*ryoMU!+=K5Q1-TAT{j7r_7r0|pn1g&1Kn`nbye&F)mJ0H11|B2UL9B*UnGz=}y zlaV+v0)wM_Tc4};oO=5n5M2p`9fU(7czGHUz%U0%ZJ9St%+;t=&VPSrhEL%1v;-vdc+TBN zKJ(REk4+xiKmB33P4`li{TrMt$S~2r|3`laXZSmpXkHm}$v% z1kW`iM|iq2Ov8G3#`ozvdVb>@oC;i1FT5@3xj&Q<2dA8BJf?G<4Pr&mDZv_}0O9=;aIj$1w~X zO(7-k{K;KHVjIQv08W^k#Y9XLYZ-Fr`PnC%<_~6=`;E&J`rpW6Gk`-`*c2f_NfB83e#{t}E^3 zrCT1lZ|2$qk1T(B{Tqcsdq&cU^n6AH_Y1jobNl>lXExt9e%7X+82jsoCZnzUmMy8K zPpYnUuBIpTeq6~YsYXQ^5oM~$ZQ$rHB~XM!J@nxoK+n8o*1Y( zj{@pTyB6k`Za8wdbHjn%i#PD=v3~jg*yU$kK-N2iPoa-)U7FlDTAv&oNt61&uOvR%#qd(eg?i? d#gwvMUHj}){jmJ71t3!laCQIyR8`pl=z#w@9*zO{3cj|k zfdB*mGCWxV0C?C!LUZ!*@f73Xarfr7w)3#D=eG3#^8{FX^6+u<@&F{H13ay5UG077 zZ0sGK-6a`*boDaOIonAx7zt_cYIw@qJ2|TaLG1N{H1%zRTx~_|7^J1>Bm%?&z@A`x zA8Wb*u$#NLSb!wMQ{`gt?~lnm40KN>KCY4svX57#18Hc}$$LQT>4dn2xNLd(`RIg2 zx%q?yMfvzR>G*m11bFy(dH6-S`1r&Gg~j-QbpIX<@T)=W9K>`Ll>WUI{Ffxdzc=OY z@6YWo!0iEXh_k1Uvxhs~V~y4} z9=<-34Dgoza|>Wk4UPX+{D15%F!=Glo~*rnbnXAA8UIIXZ~Z_|dmdeTZx3IHtv%eF z@jr#(efNLA(4!%|HDU@Lw!UC{cOO*+Nd|Zdx1F<{m^{CTqMR(Rh=Py;yzdkRWM!3< z6oLHw{K5)A1vyc^|CCjA_x7=Nx3&LIS?B*LEBt>gD<%)IxAyUX=zDm$NirDPL%881 zg^%vB8~<&UJ;d41-cAYP0j7KE2QlaWbuCe0ett!HSwT?&psXM-kY9vfUQnK2iJy;G zlwS$R2W0rSjNSjbxBt&FJn)P2JU+Dl^$`D)1RoiXU;jHK;XnR6sO{b1BN+l8vJWQ! z6>TRE9}jOQ4^KJ)ZeD)$<1_&PaH$YX07#V2m8lQ`07UrTQ{MBZJiPlY+W66S zSOAZpjUXDx|LEZqfb%q@0d{?G3xtO?z$*YMGBPp>GAarR>N8aMiHVMiijIkefq{vE zfrW?lbl_p(;Ns!pU=b1$5fKtnQBqP;(f;>9Ktn^r#=<7U!y}_0#wVuuZ^r-MFAseH ze00PbWB?KZJ^&FP0SO=BVGz&=ZyyQ*0>aasJbfSo5Rgz%5z){Q;FkZd8~_3$5;6)Z z9sm&m2?+`D@rDqQPyx8`WB@)gJpl@zETImAH9rxmSA-m6+FM<;#(o;QNg zmOfw}T^}n5{=E{xBAg}_Bb*rUm{W;R600zYVGLhn9_@Wm!3)jx*d*9 z6hr+8nZ}ASsRe(W)mrluj<9SH;OMeKxUSv1NjFAb4_Bm>LEs zo}+sN%}4Z?BF!KcqsZXkv|tmw8#Y4)URFVb(7@=-W1lRp=gL4KDgeN8(Nt|l9ak}O z0xFMFv*~7NW;hprlR@o>!4X)n_6xqt1TDX<0BYOpa?pZqgT{K4;VW!)lo0T`Zz*Ci zS}__Cywh~a7XXCOFPN-{M z&pT6S^y|I2E(SRCJ6D)5X$L2?IuXiiy{hKKePP*(@hSWxC|oOihSnse&v|MS3eY)k zob;dvCS4tKROl(060$Zu*T!IN0CxW+UefnAF0|_3P2~e>E0VU*&ozy|cC%{YWeM7p zHEV0bNtkC3*^e?;c3-SLO0QL5$YAGsf8w5vbYmEQX{S)~o%V<2M#K3nUq~+$Et%?B zsoyA5PFm#g48n=U2YvU|&24r)*dFf~K2Zz3J+#jl?E<{2ly7mF7$8(n&Mb4LjEq&A z$kr4P8rsfL7cTbKAi+Yz@=wR<<3&R}k(MFkEfv{5;-amnDfw^2yI z%tI0ZR}uGE%6pr%sg9)c@UCA67xr1K(wabqRaQWa@yK#h9xV-=T3=hKO?TDt9Wup6 z0Tu(l@j_fx2<+Qw_G@33rsKDv%?E!d@UJb1GBFNBn%s4m7#-gEIhZ;GiQ(@Pj7~9J zvl8>EG0@@c`Sr>fLVJ8K;k$iaAk4@}Wl0yyMda5Ewi1ip`cvLoT zv`2yWW}A*lXXDC%1nK<7@KO^exMkT06K4POD2@Aj1O(5W59JqL`If<&O8;rl{HCQ% zRcP7#`!r5QmJC=5x=L>|RrALtBC&LF!drc&9P|pq^OdZL4B{pvYqi6r7VDVac%c?s z*8WPOMB$8SHmpB6rWuDGsyxU*HeN^tCQ~m%@GJXv)CYjd%>r|3pIt#}W}K?MPW7Nh zWJ;fbuiUZOPm$Sve!Hn%rr@^qWp{?=E=7hT=o?W++l(YABdirf;FjbjMNE>H`O};c zhAT`Fm)As9o5l;WZdgS*_E`TbWPn+vywrO9M*9)AwE46jXD~)M%_Bmgvdaydk!Fyd%&=uJB9ff&{=u+E%+p4quzJL`dH5uK1S;lSY?+v1WG93=8TcfY z!Il|P!I=-z?khCaZ|Ll}$96=?p4%aqd>-+|nqrB+H_BhT*6E#rjbQs-zDaYl{Q~-H zHiH6PkMrbM}j3~-_oP>9Q}3Qfo^P8;zFsca~;(GwAS= zv_%<(tfvE<8TYpofdm^WSD6t;6M14pVt`1o zO)*+4otTcd3!r0XXK*lOGWFBM@K}j?FQHkNdF_^`k1l&zx@rz#YA>(F&f+CIl;}8- zQ{h$WV6aU0^l(G7LtI1Bh=+aaMJ4$cIO-b~qpzP_o9sHFAc>#_uSCasofSWWX1-*_ zV;Xvq;un*TSX1CMhgk37bwb?pYIoYTKg$NRekruim?WO^=D9{P__Vu+IC-pD&6t$e zzJC|FZ6;I)3^r>k5hG4jSTCm&w>M2*tg5dGp!|Svmy@Q>(X4xA~RZ5|3U}U|FMr&a+Gc;83@f+_)x1zY>RZkAF;SoC!fc=x`ayq zY6WLbKtvmSLbG-aSkhHxe4TXfdRJk-#l6ZH4xv0s@X{iE~;a3tSHU=PC) z)l}IYS#d;+*j82$khGLG_=un=bQpfbH|kw3xC#vs@vJN z6Q(wdWT(63;rtYj(VHh+*E2NZPj`rox--r4$;nLN@+#ENv(F{889oML{@|2mhi%mL zw}!}Vo^(2H(mrG6J44NKX z+B}_;;a|XlH~O8_6t5#PaObnK(z&MFb%L`$`MLqJQs_bG38w{X--jXm`LL_dXa_NgqW*^%r8Ix~Ss|p}EwgNG zp9R>wjULM>0r7BTMqD2oU8H1;{yf_si&j5x^zb`FE4Cp5Y^PEu0D=pm)^)=<8}VQIdAM%{FG+4_9P~Rj z=_S3Rx2IM;bbX`0yVhq(_FO?q&qG$vuL7wufbQavbUyY^aWMkKJ6*_13M^AzL$_i? z12VLv?+RM1fAflic+*pTvTbqIHLO0Voj+;Gc)}mul5X8i(i!BGuL=Vm%|zmssa0u? z81b8Y!HL{UMznkT_xn`i0|0!>O7-kzhD}vd^9icXDFFZTPMP;f?e1a<-phq-2&M!d zJ;TUqzpqX)r=;to2lH2sl)E=(b+ugJK0>fK&3u;D`!Rlz6$i9{C*sA;eW1-iX_rG8g$t04ERjc8vS30K$zm-jmt?5M}#3p14N5Fp7NTr`kqfh-k}rW&wf ztK-$|#Dp+&T4r{RqP8`e`*q0Q`WH3W)v!Aq-+TCLe-iCDS!!B|S{u4pLDi1~kfrTQ zqBKH5TR|!%IWjX2#2{>qX|;MoS+t>y7-qd}3I|hu?vpl2H?Hzc(|P$Ml6>?~S8jjD z(Lg261mm{}vvsi=wX*AB6ePW}S3Esy-^OjqEew?tp|6C_C>>MV9lBQ>v|+k`Su#;ufoY7<7oDu@yzVs4`(^L&&OLxeyK;)u zys>@;?c%qApAH_errpr4_sT~-4JfjMdf~*lIQBTr582p4Sxg@( zdL!N9%ODwrD0|4^gM}LXi}^YZNhjP*m}qMPoN;#6g!mn)9>rpZE`JqfGfLETjO%`s~k-s^65{9|*si^^J#FJ^*NunaH0#e{UUv+N$}v|24s`Ropvkdn;c9Wa!r; z-=55jROezd2~t@4lp5wT55%SRt8Z`{%{F5m;)7b4!5q1;eK1@B;w9&Ryk^s;!0- zKjJ35OHl>ko!vEqw7%MB-t9!*|0BqTA_BJ#>5=b9(x=Ga%1niqB0KePw^Yg^XN10En*!mv2Q0Mhe7uhkv4+lcTgzO7=}LXc%-;;gn%;KY#ykK# zg=cUsOggS9c9*^Arr$J;Br)jW%rqGzv~|6vOc-kRk%nT5@1dEXkapom>5Ip+8evSA`JDuS~Q z2WfWXJA|OVtUz8*)Gxx62&_D{b=}DEo z=&}u&<|@R&&ANlnApW{Qvc|pCTB}LcYG7G=9l1+6lkte*h#we1mtrT3C_u>@u)30VQp{OgI02u~z(c zEyl=zS4)@_j`C!FtNmpiemBATxM%O|>g#CDm)ZhK9--+Utq1N-Jc0`@+#5MzcxPG5L!sHX3d4#CPi3hLcQPP2f+|!9f0oQw!fyHQu z5s4-MTbWmtptZ%A;dol=G=DSvo1=SngP240fLjGQnZCEAOun>G<*{;%gLqLlQHI2c zL0yj>ql zHxzoVlKPQo}CRG&5VG>3iWRb_Amb%*zKhj-t(mf6)Tgvz`5PU61+s*b9* zRoBQ6nc;(pV?Fdt3|5rQkeQu2aC@X~wo6{4j*Rt@7V^D5^)=|8sgyf)A6w==ldzT-G@2dJ5rS5|k34&pSEC8J0i7UASR6 zyw?qjQHxO3gUjI*OXh44eSpFn~DQL!E^D9cW- z(vOsE4zoil{G}^bfz@38?u`7i7-GGp?rv9Tr=yxI`()W~{iO7WXSu9Q`zQbilio%+ z{U~f1-J-jy6ma&9y3N+cm$dwl4SD)(oE+HMcywf>&JXU-OT`<+xWFGC9dA3@H1T8; zUH9;G3dipavhsGZp~3*1I3pz9wI9dqC98Lm69`B0?;9ANw77#l*G0Z*Eo|kWF#H+d z@r7S`cSuzGgL0e&07|B;WJ-dwS>sK;D9JIkT7>3<&p?DRX+mAr#F zgeHGfwR&H9C*zc<7&GVNGHo&ICJl^EAOf>dGGA`wf6hfuzm6VA7Bn`LW=cvDM)>$< z!e3Q)MXgjK8-r<91xl~(LwmJ_d1~)^EzYBAr&-1SK4<*9sk;<2#}32#xcF$P>*m@) zu-?I;(zrA#$8)+wpA6OSFo;jjSFNgx_8lYR0A--8U5+*CUw*WcWrW}>KvSMU+R}>R&-LBW9HvOs zu;AFNp`QVv%Cb^+181_q?L)bL(?FfgVlG)a@`8D<>#cni_=}wMP3fp(M}E~A;%7i6 zh1aMYnbSXTTZ6V~F28gW$8|5wT&;mNt9p8dqrLvFZ%?>RIt=5t!-)Jg4h22ZxQFsu zbd1M;ny1(IvapBKXD{$uH(V1oQ|@klFR6sln!ONysJp| zrI?$dd?UBgjT_!@)IQH%>e-{4HNtW?zUU7A{tE7uS;4Unj&}bj+}cP9kNoY?)q_jq zkAnH5?)2m)aXb<-lW+<+Utm;+&&Nl;mx~Q&ba3(fkttb4(R1*)>YIZ{wT*->joLjKW$f2Xk@4CN4CxFhaxXpvBb>lM*1E6H+lx8P+qHbxMVAh#Z(YRmkCjN zX6^&v)Mzu+6SR}E^E}3_gfQ@2=hYkXXAK(MVwQD*rlCiM356VLNktOhAmkE*Z=a`) z<;UY1WoGf-o1sin!+Fh#} z_ITF+Du;qJLF8WTKrmeZ)pbo-uf@2<3S1@`X6rzm5s0R*_w7&TBq!hQ4yUeMVwVp$ zDY#ch>(kuj+WX_9=GfR%`C@+A0{Rh$L|CVJ?(o1wSFJB`jc;XfqA*XYih_+ilMDD_ zu~9KJ+oRAO&2%wK4Rz%b?W!H^ukbMrBetQ&tin)Po&hKuvRkPe((Z~hzuJu*Hbi9< zXn)%&Ea~bEe@a#1Rq)4w5l%J(U%vE^GT<^Fe9hAbY=?`L@(lqb>8P~%LDB2ZUP0M{ zAh|hAFp@bLwQnsKYE{#Bif6z`AGErf?1_DqMgs(}wm>le{#>cl`{=s?hIV#$%T)&l zCWfVLMlaqxn_q{z`qskMBbrxo31|GOP2x{gR=!y|t+=KE#aMsp8IK4|w#wFt0mnhUnQ_d6-h3@EBY^jW8@$gJsZ@{rJ?0Kk0fG4 za;6pKkaO#=?AHS_pku(Ya2LQ>Jsc#uCZAx|>u^!e#EK(js}yEgx!XhmiaAM*YIScX zbqx!zY~4Yh`|#(*v6+gYHG3sL8A2S&`uK8T#oC98W}*EAtiM2YMuBQv2}K&!y;K3g z6wj&_%A!7uR=ZoiR%%H2&yJ-jxL$6d9*=Xdo|;fm(ZTiOMYE;^;eB4sr>{H7z~Pa^ zVUY2+R6O9{x(F5N;eo}03?u0H(>{Wbr*Vq1Ud%ZECi6LFI`wC3P?6&_j{9*Q z1HKBn$mrYSkQaD7w-~yeN}8Q?If<$wb14|3Gm!x6x2x{xh^x+~EF?}bi6GB+ZUNuf z8=-IWbo+f42O8@tPz#F>(HX}^z}4e6AdYqHVvA$tEd>Y6Tiy_2OSu3zi~Pskg~KO& zYJ~@DBN72FV&LBI6Pg}8LFbcTj|PWIc{tC6E9`LCeEfVY`3R%%l2&j4ek_k3g!&H` z1qdNhY4hRBU?~EoO1vmzDb}ispv1)2S^C*FOL?I?3cfN0L8L&=xS zaf9cd?{@yg@(2zxjEi6`#;L;kaX5!wn(p|Fpo;t0tr(|teuY~pFZ%BDT_Y~(P+S0O zQqwM~dhJycneHI5f`^yGai6n=^vYer0{}{+*&Xx+GEGu+%BlJ_g{z|#2FjP0I^wvc`6>9{{!31OxPEZJb^^%2D)`H+$x=4%&jS#^@f# zpXHwer#*CFmZR_29suVAZ-D*}fHbtxjVpVl4whBP><0kGrsZhO?avoSU%v}}Q%!Cj z)>%(^nTl_18;n!X?mJ_kJ7%R`MV?ULSVZ+Pr_si3DAbUYrggPur(X)!C!z z0aXtH3fD4)0DQ%$<@9wj7)!;-XtpvK^MGi8NU1=LHqsoz5I_YjC_RxI2uxoB0@e*F z%_v=Uoz9lQYkwq3pbFhq%GT|WR;K|NNt?Kw2^SPdxFbe_Vr&TT~$upia5N@lj_o^5pF z>7usKEwjRC@A6?CNO)%vVe}mxUw#|aS%)=L z8~Cs-Ta1O*7){g5C<*JQ<5JsKz3(T<3*Y`T^ZK zXhirk4xWz~Iu{N`IXR|v&q-b~H?A~pGXK^Wcw_L=#+?P1pKnASuZS6dV8vr?BP%RD zCsbQ=w0qP>YS8aG}`>8Ni8>s;s9Sf_EBFRaNH=YErN& z1s{-h;NnBRAM!50qk=30;>Ze-VuVA-EvO(IP1o61uDM?xCM)=2*FZTCf$MqxVUWpQ z-$Dr`9d6srXz4`YoPNA4Wn-pUr`VyEVz=S=*C5vnqY>Ez`&~MlvK>1<<PXrcwmEfc6HdGceE6VoROgPlq2=0(?=017{FbCbj$0 zDKf1>hO`}I=VpJs(9%Vy@Ucz4*)D0qHay0zW)5zU^=Iyv@p%ieWS z@SV!kXKGYV_Mqe+jJk&&%T2@EoksC2WAac&<5$NUN>)M9I`)=>^KFR+ZbhU~DU@m1 z&Qv*>m5@O`t597j$=1rY!Pzoj+48UF&0b49R7w$a5c;gRbz86A2fzSLR^pyExH%4W zGT_^;Z9Zt>Y~F)&`&%w8c*JYtJr`B=Ens>g*+Q2zT~Q%j5xUM5XIouDJU1C;(h(xp z2D4A2Lf;>DMl4)n9b8+R?Iwxq4@B6^&S)-ICHrBINw>c0;@5GFbXHkQ=pYNdvw$Ie zS%JoNUQVY`LTU84ux?|e);RRg8F9-myOWyVtAMd=nBhF zjU5d9@hca_X?mfySDZ!XY&PoEQ;UA9=QFJ5Nwek;2>J{6E=H=qI%i3nb92rC zg--^LK?W_}r4 zhOZ{2j-=FF>dMG^2-@^RNMemd;S5;dV+7!hzR6FM$`{tQ5pSR0RSD%UkNYTVy!uOr zi2JLw%`Svj73W4L9+`l%z03`2#X*{x{Jc3GwCFd#Vz3+;+9AMR0%~g)Dw4Y^9Lax6 z8Q4jEAcosO;-{U4JvBm&R_Cggw=ra^X1aGMz9d(b^jh5Vygaplqi1U`BWb5}QshVa zerYYbocmhUN9gejZ1)AOOI;}~lAOE#YaAmUcq~P%e_*Gn`D|e7o8mE1b>Y?rzWbw` zy=F-7+lt{5mYP4U*Ouf{AzifMRB1aqlu7B6cV1%mowvql27&ty0B23G#oNDBgNbmchbF~x?Xa*_}vTw7&JA&=4d#vS=le@j{%jS>E z^BzigXH2Z}00;^U8cu)(`_=~?UJ7~4&@$e|UvmcNmRfp=PJv$Xn(%(*{#DxK;~H}) zL}94qdTC!5I;>|nU}@vpl4k6M*g(p=C`xiQp>sPGvZFYoTSueey(7eUW|ly zAUu9%P`<9x9636WedinFuR491!*lnwgq>R@v*BSrtGFz?Z{3Zz*iiy?tw+9`t~gU2 zk|>I{(w}~@;5gq*aF(UB=Bs)^D30rsxE}zQrslmA3yTn|Ivo7s2+vIls?n9V!$1g2 z2a~XJ>Q%2b=zCOvS)nj3%wFvzF=kW4_4UV?WtyEzeae$tjORg77ICeEJ7;HBDt4aU zOi6(e-b~rjXF)+hwD7;-u&C2i(P|9%6(LbWqblsz& zC+Q1{Xk-vfe!%W^sCA@znzHzfFp3eqYUlE^Blo@PL!CFhLxtY!ZQMYgqoE&f>=6{U zk3mpj_u8Yn_BUwF?w+_KA#V#Z_q@b4YhSz&R9Ghb6`Y&czU>-%_-udo`Asqe%MynN zmni0&NBX2dGvO~}aou>mQL$dR=@XCU93G0WThW5QMjMURgKup>JAl)x1 zvd&qex#u5Beux~unYKc6ha*L|nzqyWPowjdTo50SQ&fYIp?aFhE>HV+SNkL+WTaL1 zeJ<}x2H*Iv+cedSo0U)%eZ;vK=I`}iCg)9B%J8TCaZ%jSB!NJeNzV7Yj+We4&oM66 zJYok54>%BvGCuRsX%XcapUXzag&d_&7QXUxaG+~{KhXI(!+n|6e&m}G4=jZY28A&) z2l}Ps>c%0Nnf@ehG3w8j=l%9F_9ww727wmLQ^U1i$byB%)pP2xoA<_1+!8~`%B*KS z`H0;@H%ppbe((2fn;IrknVfGy2K=}^t_u=pZ~+)D2mgok1H4phS07_qbol=!J;lM{ zI>^P-_8N*OPOlFbehP&D!}a0v@{>yP7=KQ~Ko%h_o8)K4c37pGxjhf9}#RQ%8^B%8{}`Ho+iOp=2UF0Y;ZX%@Q8tduchksGno zooZhu5XBQ+0Fpo58YH6@VG=X4Px7mMTAh+?zqx$N*J3E9mAv)bJpBIq){TKeUN)IT zW+Z6lG+QM9EPA$Hspzhz$f0yT(!Mcp8%c_F6{~{@OF_YmgWA-gc-_erL&Q^0H&}SN zH~3H4r=PYgEVu^(&51pxUn{bx-_aYrbo~pn@&_H9wFa&77+Bz#F0=(DGz83!j2%*Y z>MOVFnR3h`w`$aOrYH*QUHWaCo=7I2yI(@orI~Fr z$EUY98H5I-o&^%Mbnq6iqdeE#Z>Ob-=(?_LGr>@kJ%ca}?ex@8FlK$tlut|F+d@il z8Gf}NbSQXZ=)8mE`0h{ipM`Ca9ucq3)ai@;t0DS{+C=Y;E~(8?j5VVbgHK9+iz`QF z9&95J&s$FjfhVzvOstp27o;GH)4GKYK9^^KSgn2iFFSSenOaZwhu7l&rp@PrBetYN zLw<~nkK6T=GUV}MWA2dP4I{;#v55&myBEHPK#PE6oE~G?6cz1!!rJqe+3)A*4}dTxS_o_CQLB$3d(HwIYc}{t;xG?oS4_M!_ zPU_{k>G{pJvQ3(F!~;~4z~mojd*sO^HG5FTy#P$apB(baO>X=qahs>Ls!COz_&0ZM z3{bX4Ca*tbJo>$SOO&g_7Z=CiMGx4Bm&IDJWLIWxDl2B9o+o_{NgR!mX$SkOjPVm}Ujgnhy-yVdNK*X!@TMmO%vpcuy zk9kU-fu@^tr}yEtJ*GcUN1V*pD5*!fZ7Dr&8oTsNW;D|D6UWuI40d(PzebLqN}h7* zA6YV0ICB{h=1oQo73Fa5j~Q5}#x&!+vYcx&tOG|Dxk9u@q_`#9g(Lh&NJE_l`uK$Iv3o`Wcs4D`bgzrHA4$7W-CX_JHOBG_1IlwPQWa0M0D z%VbQgT|_H}>$o;ii+@{GWbQ(o5UxfS0R*g>F`{zsMk+i^bn!S>l%yyphoCZD zj5@s@g(E8wY997N4~^32GVg=M0-;8uk#FM#yG6ptD*Aud2N8A~XPkfWUv~RgRM%h` zxFyio#>2+*-Z((NP-77`;*(R#ZOu4;{&wo>a@b<$az$S2mBZg(k5}xjX_bQ}6ov_uE)s?huq= z1V^tnkWi{;z)c>Zu5Po=xqj+hYcS3DpQgK=R9LR3ahg1d6n_TM@etV%L>`yE%kl-z zK$nlZUw_P)l9nclN{29-wz9mr5)0GgwqL$t91Zx21`k=IAkoajX~;ZWaD0*6^%~(e zzd(XmA9RBRt6U?i6_*n_N<)U~i*#B{2$gXqnIcH8Em- zpPtQI%ic#e(4BlmcXR-9TUi)jZ%rRL2|G1fEAp~+KgYt_MH`Ri>slf89_^C-(~7ny zWOB_C-b%s03HfDdcm8qk^Y}Qkz71mvhLW0G(kd#~+u%d83&eM8PWQ>Jjv2phX*H*l zNoiD=(`7oz=3Zb?5=HHjEnRcGtoi6yZ@RouS(2cWv;K4Xx55&H-=wRq<4dpWiG>$GCESkuyUTu04PZ7*x2~| zmLll0fr`@j$pfJKwy4!Eom)Qildxu zwrr0#As>tOGPjDUs&SXMU@c5bRvG57ORUTBGvKc+2e*W3l05a7yw#8@sydsAA9U1! z-g6=YQPiJ0-eK~bFcJi5S-{!$*uJi_?EE+b<)M~L5XRIU2XA7voz7@(7deqC{i=E) zk>BEFMnPzFs>6B4xOnN?yd4|FWla3HbA`Tg_>==HeB_L6Ur`emH*3^#+&{(_ze5$& zDYa6nM&R@X5Bhh@LHJplb_hU7%v}`*!p^u>?FS|Xq(U>^gyqHwX{>em^ z8)hz1>rZD*QC-;qT>SL6&{eEg&(+`tZ6H>fmUg_5Nts<4MGa+@IEcIb;ApWR1v%70 z&7&g_rfE9d0OL$QjA7|wGY#?=@~zEV>6hqO4;(xng;KpI3sxH{#qn(v{;Qus^|fA! zcO3bI(^*2MX+UxUUHICx_{4>!|8f72q zw&s{zraAEa`s%sa_cbZH5q6PmB3B0v(N*QK!M`=_1MfNqDg9qYSf8)^xziRMHLls` z8zXR71>f_WRXHuTX%O}LLvCKjl9V8-oSQSzYNa6jS$OulUM%ClDwO!b>)kIi(Ah(>-D0*#jbj)`Q zU~+|fOiQhd5D6@HkC%CPmnp@GC(JK<{$l3$k}f3K(X7ZDzSKn)%ay`6;mrN>eieLO zD~0bjd{XP+kxlqI_ZV>;hTN`vsoFg*;j?b_4)`L zHms)zcO^nUCB?q^0Xcf)Q9F{2ABgoh8jcAd7qm_ z|7COEG_AN)UVY?(BLma+(K;2BOvYu_c_&x3uQ5J0P6<)BCOOXN5vo`P5^W6!x4+@L z%#pM*sIPNaa?lb<+;TlTCVn20k%|(KHvQS4+a}!unS+M2TKf|vDUJNBLD#8d|ICu~QfoeJ>55JNXVSWa zA5jf5ZOaPOK9D>i^WM$3ec*$6UO$1`(uoMecG>9A>%p_gG^V*9#uQ%+;4c@fb$fT` z!9Ki;#QM?J>GYMXB-NOo{Hudjg|@$Hizt60|K`QXflF4adcS55Q^j54$%Y>Fs)Ro| zZ;7~IpRj_5UxIH~d>vb>Y}UcPeP9ku!e?;MW>6P7VQ`C>lsfaYBiO}ajd1jt*de7tQD_P zEguy3s#UAmIDYPR{xh3+O-m-gcjh>#*mPW|Z?Q^H`>JZ*)wV3?!;cjzzgkjY4byG{ zU=O~}A)NS;Ha!K@p#YWTrYKjlWojuQ_WcUIocJ9&-bP6j!Ow)+gb~Tp>=`H8zO`2- z_&&8wpY~ajn$c#V?`?y=-x3P#&uI5&SZlXatBSe)th~kCe@06!I27MhxgUlxd!iCu z*VtsMVh!xF=Ru#mT+9e5M!b%ed{AV3N6a?zFg}+3i6eJl>mSxQI$nGM;X{ zNG)Pv5gCy(bVa-sC2>|-{J{QZO{OjKXLLB8xKl1aZ8P|=vvAS zF+;)Ql~TItc5euM0XuI4`$x{%+Wk5NAB*emT(09Fiw{B_eYFYk-dVZRbOg80kk|CU z*zx-u;%v6ale?VnSeMyB?%KdYDapecOC2Cql{kI2qC=;+ek$%ZkBM!#SO)e^u0XW8 zu<%C#)A{6i4)k;?@^j85hm=kVkfp9FJpKm};c^_D7*PIXeWy~xrmJ5Vt7!Ad0PzpX z3kZiHCT?3mk1`{Js#nzZRvc(gE&nv-0_qVmX+8Je+>~LGWE0|j^Ybj3uV^|A26pQ# zRaA=C1`RTv`0a-!x43^~HET31$8RcJ{@6s^ctz9gTByT~&Gdt~v@nSk6Cq^I)Ze0w zScjZ~B_{=H>z6}^70Mm4g^Tnd6G&7#6TV9+q z<=?G3#!SR9ad#HYOilzEWDivRyz_UQE*SMYU3$M`za5yEY~USEHA@}-+LKQK_{MBY ze+hE+HV;;!6VE9=|Ig>Fp+*X!-5l8x?LGidvp`>Ap$t>uWbzhF|{$<}7``aF;4 z<`49b(AzI&H|`@R!IInD!w8m^4H_?TR31&|=){V1%(IEEMfnqs=5+{n0xQ0f>C5-tN3!&FFVO9d)AVZ5;dP8(J*rs1yb?94K z$X(iH+u}_a2F%w&vtn(gVX%KkA>am53fZCK@z;A_yecWFp;2JJz+{#+z&}WzAmJzD zr%J(kmGS~t4fZAfQWrHBUzr0vpILmMIh=~`^o5Iui(hDrE4^9zNLoU}9|2s-n2~vu z50r;BgODW6{9-T=wWUA_jc##KI1RCq8{;tJr6e7tgz9W)kuI6g!;P zQD-8L3zaLuG*hbCl};=gcwZ9=Q7G-`e{s34MCXWKufXyEC@C_(l8h5eG|Y2=pzm^XowFJeR7dFQr^8V!R-=Tfb!uJ?#55HJHvVr3-o2 z#Wb7qjQ)@6;_BMXVvDmxEwOVGUxVFrP6UCv>>HBR=zbi%nZ_fRwhwI|$+hgIv^qFe zB_b-}ZzlhvS;FI4kMA|Z-9)-4SMeW5k#GOsY`6^hD0tbb%flB{zDm6Lf5Krltxxf- z$9H)iB}^e+np9ks$Jc+*F)xZSu|(t*+`iN$qn^i`_V$3{-7&+M=yUM8 zC?XFnS&sU0aBJv|n#PhF7X0h^@OHof?^#kFCgZErXtvhjO2gk7ZP)Lm|Eg70R~$N5 zod+o2x4p0@9Umq@`2#!Kp%L21UhB?usYW@O>*T1fvd&lC;Cx;FNy=S8ocLOiW30Ak zujgEB*;3B;#=!LbD?vD%u<%bZ8GA9MYA~=*R1Sd}0jRecDY8M;v*!(hTLql~Nyk%a z_BnWG6H7c;>BCf`;1iM#odel zm-J3S!$~!tZx<;kDf&&X(b!;K8S;|~a%Y-o$>fZln8{FYn||qN&F+xKU1)lf7w!7G zg9qs)e&{b*I%h^4k|X-->T6eE`Nc{3m((uiq>AU)*_w9bB5A9fs(BL$`#l`Yy;J>lS%yWqe&L=5>6Xr+yCozghHi%LZX^Y1kdC1nDe3NRhLn;9i2-Q@ zq(s~G!Q_0UNh4IuBC^OqWL9hhYw6=G|7xk4%ysWL^9%s-F(nnBytj&l4+rTyK& z)x{l#C~=?`ud!guqq%#u`4Mo!3D}!{Hord3okHPs9xAKrzDC` z=;!KO+;>CL*Afc>fX%MR^##`^|A9-m(NV{wLL1^H4~S^dK`njUYQ|NL8ZNj|mblh*X=-}#+oX^a2BhlV<9V7qVdOGGTG|$qH zpzR%Q4$p`SEaWG{{+3-Ut$3gA)S)gtLTGZxzq%PK;24h9@JXCR(2|9Gx|$HHakacnyQ7;a@=L!YIkpn)Lo5!GD3vqvTS#naQCri^s#PflXacxvk%S&=#P;t zqkeL!4#FFP+o?tcc7@FqgCFz7#nx4O3^ula?pkTpWMO;UOv;ZFMs`r_2twH5pe;r0 z@hZEC3p|IMtgvxqayq6IjNFOt1tyghwJP?d6L~kxb_Qr!`%zcwl#K7t(7T@)6N`hb zU|=^e_|4r9+1~ma{@W>7E&y$VA}up#FIZHV!nG!db_n^%RND(>3~ z-n5Q@i}vd!@wX*!R>FOQ4VmArgi``*(`0p$MQ?ri7oIx8-e5sc$H&QtA<1d4sFK4L zF3a^2uqd^lJMAlb_?dqksWywrknk$VJ?W(7zAYE_9G(lvaBgs7@-}~VO(;7e-s_<7 z>UbOBaK1WognWk;9R;|eFKKGuWJeza65^QwP3`(do1B{z<5TjuUT1nVxI?4Sc~z2T z(BPhH!ZyCg3#ksTjmSKWB>4>U*i26(g-%jffxj%*u6Zq){iH?xE|wZ8hRtdON;S%= z_GBtfXJuWh+z%HTOD8NX@;5z#%?$HL|9^rLQzGJTp6%a$ z>)#rS1uLEiFX58^)aZ*X+7f2=`)mDEMpi&#hB>N#VR`|`=gmMe>DxFCr*9?51{Vcu zAZ3malH-pKmGvrFTcVGBc}M!#)%($0oonjh1Oy7zpNY4Rm&@JkN}8PBl)%^6oE?GK z_#Nhjp)i4dE^bu4sz;4aw8{UqsQl=?<{7DF*nwJ~u#suU!^V>Co0TgbFpDJzJuh9j zyyQ}28nK9-im##1-P*-om<~wYvLjKDlWzO6U)D7jXl<=7Vid6a$FW#he>x<~XDWfc z8J{L~FA3x-N_zVUG!x;vU-oj0#`j}?<61S9&mNLa=ciwiK?<*JEl2g;rC7z2NR(@N zK+#aJLn7!ZWoLiql4LxEo>wU)_o%~rXnoVF;athlXsvnF$=Ps?Or8Wb<_dZ*oW^F? zCXHwEoTWzWCIvHyJp5GGG{ke*vBt~;OnVu$%$jOJ}sf>HbAfvao z7PE^xGm8l#Aj99(svY3 zrZRDP_JpuhyU8JzFry(m{d%%M5ivCrgo%bO_O?u;J-85_K!IOWitO%UzK4U@+3H{={()%L3RW;{Bq@?5 zVFrAE*kl@(5fr`Zoep00kI?{^Friz=_e`L-P5CeRvoXvKeBNu=iy3f|TE46$Uu`O@ z#6WNoSt~3wie4Hs^e#&h)Kz0vk$Qcs;;LgT~MwBM{$P5sQkBz0**QK~Pw2%A}~7U_A)Z3(#b%r*5AEOBWn5Eftt~ z(&VtQz`D2T4klImkT?NfUW$K6=va#U(1vgj9;l!plF6w)HBsNOm}A^T^2ZUD$hQjQt8Wp zxYM+`7tdWvTV}CXy82IQi03cGm|oNSF@O!>MtSIsqlj4r{}dHB*~~<9dBjR^@G^K~ zoYAkXZGMvSQ2AA%>9IPl#l9lks>{1Ge&=8OC~^Z2ch_sKfEQ zMrI|2guwEEK1#=_;@n0gxVS?+O>rEG-T0#(v@K|91C|!>k2Tm#)vCOK-w8ve(zD^z zsiC&U6rqmd_qLRBj?SWzc^82%w7#!)^7iAf7ebS_i99BikA$~bS){;|*#LjR+N0)yb-zgL4;t^OJSXdd!5;835QSBp^b{&r0 z>-r3(IP0tHj7(e`vA?&dtQOW1z7j2J{_I?~^cKF-Q`f_$_L!a7Z|WB_!uF%tTRc6pGHGV$`S z9Cxwd>a}&2A9Pix^HPsfk%q8YQlVusY@j20KX&*we<$iR!HH_36l+=904LzPc*HHE z@VIpff$6pmP_5VUgL?RRH(_^Nvi0Q_(-`lba92q>!6Vu6PCtCtui2%vRF!O-n1EWg z$UTdsX(~p6PjRf_J!4X?@5y4OW4(0beAu$ZniO(v$bsk_-x)15R33@cKl~;zV4%nn z5F>_lia)w1&vg5cM{};URt?0&5Y{7ljju24Ix^LcEAdAAax@BOjdFvnfBTkbLRGhu zEkDx&8%lNPJaV}y3OfB1cyyIP8DNfUr({dJu_J)t26J)MHL{+iatV|vCmWJr6z8XF z2?XrFMa!k8v5TT5_Xwau>7}8``7C77rFJdg$^n+rSc9>PN~}mc#aQiFc1aAa=|>7UjL+w`)-qzg z3s$ zF!EH)x8cSw{X#TZwi35I;lT))wQ#61=YV9hzC}kBU7$61fp4R3?dqK+lQ6@~xEVH~ zWP@RjsqgHwfu2i2WA!d~#O&NiTK~s}PgIzh@_gBDiTsxk!4V9TpOMrRo!~F3X&i=@ zSp&00nOEo?_hPXMWq`egV$HiN(Y(S{z0p=ZGc}VI7sqquar@ojlxX)9{xEWu;1LKq zWIGftIgC6dFr(Jc*=4pv#ycDXES$@qj){cXch-SVK1uqJm9ukXz^a#nd)yD$d(U%8 zhSp>uj8qlXTFAWj@WX#2RV1N z6LExZJptre-x{1WGY}d>9=MNUR++I@;VsKf>=3UzY;28K5sklwBr=yor-LfEL*OA{uKmv8E(DCl$0TT8)3)YODdw zt<;eMUW>N5oI1Kh8i(wA3@34Xm@khU$DoZ*SKS8Pm14UIYa{`SF|Oj-3>w)(crOF% z$dollh|L>TKb%Q${~1kl#tj&Inwi=)e@sl?`?+gJv$yKzuE}sIk3aDHo%bEVM}s@Y z?&-vxulP0>#%OJ4->!j}ilI8WH zDq)^~jtL28%)uPf=;JJ)71!j=aZLer!?u0>^~E%cnLt-@1wHBy_dDcjF_RxReG0PT zk11^#)*V@|c}s1)vrlzoyFgfQm6g0HQAIKD2>8Ps;-_Y$gM&&;BG>v0!-SGXFNwz1 z^cCQB&nk|Ud?d(p7Jtxe;{)RMNO`T$r(CkZ>=FylI>mnBNN()c++gj85AdaD8wtBL z&GmEvz7zX?N=7ZGoNx=qu8MA&=oy?sx}XvU3^?lF^4|Zzt*W0O3(;)k7O@1lcd)`C z;W$rzSj%r=1zH1Y_>?Ur^=HDp1ZI=s3sy2O3(8~ZPLB`gMp3H2NCyfEeC^0N){Hmh z8ZGf{8lE4EMyJhxV}t&~5`(hevtiMsUX96^aItbS&muN4*&>-Tsc{J3kC-0+Op75( z7t8->p-1F0d9|cp@AWywICa_&z-lyt0SV7|gpy#)Fq3J#?j-9nilFy?+UiyR#6W+% zakm>oo2lJ7`Fuxt*33rOEABh7ZLtW1a_MEvrNzqcU;3A7YqrtKoObA6fkqLIKYQnR zH-_!iTzyGa6$ zmY$9S#jZ5h6EN7R2m}Ls&6~vnX7cR=g87)^HubfMv~N19srEUzT{K36HnQR+!eXXl zRApsq9iss0V{^t3G&M)v)S_s!i$nRa5f8kJ3|^nGDNcHhp3FQY2q7qdP_xHj+>e-3 zEJWhMT)8^bHD+0qkVWFR1TDw0?1-{F1+s%u-Vl)P(@0vqN9*QmU1833%rwBECz@X0j%InLtns~-ZC(G7Ot@>M6)bmTe!l~gN^of_puTAW;H|lK2vNT&( z_jc#0m-s+kl~}Sm?F)>c?1fYCU#(0+hqYY)f++tjg|K$*%ghs2GhaNYFCjAY|AlS; zEvtWLpB5~^FOA!m@aGHQ@)xEyT0S+Y_}+4hY)NOtK%>y?2Bj-#oiVN7!GpQ5;h2pp zK06>Pol1kcd=_T-xoH;g97>)WS=`XIPVMvg_%;6a4u>%ynIZ#|K9&;1V(Su|a+Rp1 z@4PzS$Y1i%b)nW?P;l@)by_+LJ!XE4avrc+sDAL+T>r;$ym!o&eGNT8tb;mgd?GW> zcFKmz7%>fX-P<@QWT|ZO3g}D5wh%vKHzVgV-d^QLPN`?-ZXx$r;E_=CkxlQz6c<#P zsL_LjC22AOoubuBJFQIwS&$6p=*+UzYra)U47+vQd1BkWQNaoiMk$PGl#YAEmlV*J z)K3zcc1d+;sL4$nb2B2=h9Ott`tHKMqc=M2Bs}hgR>PUbpi=p%l7) z2$v2ybD-)n+vDFWuBM9_zgj$w(o#FHVtEc<<)nQ=!3zcI6u8NS%(CHs=Nydad9E^8 zYjskY;Oj0^p4L8c|A2v?M762>i781_{AO#s^H!&L&ozpuF5u2zPd|Db<|2BzqrJRk@h|L* z7k~ylF0t1AlDDR@^!hmM8ji+Rqk23=Q#6e=3}KpGpQq}nvwTpAhbY)b)*PK2i_h`F zO&QkRZX3;{;(9uG#EICu4@gi;OdLx|woEUwu!e}9646??I-c85au{`$gHsIjyQ!E) zFSV4w?UukhHfJQFwN9|%7k@pO`R1JFww6Hn-%u%>kJYfa63W5Ls% zF9{*w{!6Mnz@dJ9pBO1g+;lK|X+8@Qd{t_1Y@md&bQy8TrdSU52^wI(V_cdcxBmV^ zL>+{{9Y_&pL-VLQPrkpobnwKyZpVT=ltEW`$yym25ZZ72J1nqs2?pCk&Ph(4YFwrK z+Dv3>XIc8p_^kzhTRA5(52f*fEbhLu60-DKmpwMse<hmM?2W^i$T#aYP@JNnv-CxV=;Y*R2Uxz74P2nhb-|(g&t} z$;-*7L8$w8I%a4jMmi=vD9{DM(fQ4oIbX`;BE(I&aT|&UIY`f-t<{NDpf@kwxb2g1 zh)*-YE31;{N>L#Pa?v$%(vO;isXk2Rn>ljMJAR z=|4$1BKZl{hLtX~Xo2G)M00!ziTy2`sIYu?@CP`lU>YNY57@tgvl!_Afn&|kT%hRa zd4-f)Rqq();QWd^H^D=kDRyd~7g6j@@&lDX>p^RX?61Xa=yxJb*V?hK6tHli{zjQ4 z0UIgren3Y2%vA;%@)q2hwqa?&?dbV_o+BJf;;5A+Db&XZm}52~H&==<60#WUIbYvX zV+e?)gK?uwublqG3B`>2EJS8K9;(VKtTjOBhgsNU zFn7PleoL5DEiQqGZ7rwI`<@V$FN3Gf7*G3`W01(n1N&2@ikp!&MXp>y zYL@)dJw}Hj(EOX_3OrJsyZ^Uu%df~UQ$TbBk6KXy-De%tZfaDQVQ^?l&bLiyVQ90a z8*KT@KF#i0LC>((P>R?Vl~C?MJ`2N00oSn=1FwPMaGUtSlL3dfsBY}9H&+fnM*4T$ zwWzooNzS`;E&#F-7hSGFir1BAKJ2b=u3w=t?2~!uqe8*84a{zGRh{3tYx1K(R$Y=} z-OCJwId>05d9iYuJ0a9Ovc^(EOTS}?vxi?b>bvhx$>im659O&R629ZkQdo3w8e1;4 zsrfcIfyUZs;A<6+JK1X9pp(C>$+1uxQX8J4|C5eq;C-&Q@Kk)UWaX%wzQ9V^qw}I` z>9Z{R4x}^5;^U|(L%tm@@4F!<2f@z#@Q{@cI;JOk2)e8f5{3C18BtwCJ@b-I$jfRL zby5!B<*hzPr**H`kKabEb{Q4kJZQXjdUvIW_<`kiC86z1 zrzTJ#*6m~Da!2PGlV)+-VAqT$FH7)f2t_h1=8uLkix}~`l%510Ry6x%6eYb$w)U<{ z5!rci#+?VpTFkvrTE;g9&d%n)34~^1#<@rd)y(ra#l@5;ER~^}*#{{~TJ?2c5atpL z0jOJVg-H_#<&r8obc1q@qv}n{%Kl(~Nqe73;n`%K8z8?2<;FA-(bkr7B^Ue3i=p4V z(Bt+LUZnc9?rjV%n+p9Qf1dHh%Du^M-ME>vgVaW(b_ zv5lWQ!7pWEnnR0Sdh zmQ5mEGM$3LO59#CN*h(v#cJb&W=lbW6lLpFB9%Djb~Pxi=Z>Ienjx++v^O2o8kAez z7-AvgtV5NtxYhVT?$OR%4F%BI3a*IUgMM8&^B)9 z8t%MN$Tkwn{a9|l-&O+;0{{rb#b z3H7k;2$bh=<0<|cBjD>Z$@`^ad9%gxS8tE3trsWmttr|JazIZ9G9?eaL`$z^%!dsZ zvXm9FrPMHF;CMlSpiin?c$O(k@s;q#E6PrX}2pw-*N(Qhh6VD!|$ zdCB=mE1IJ9wYJ5L#aczS4hixkC9xQ3m3GjiGtko%LI z_)p;lz4s-rQ#%uC`yFJT32$5~pOo42R=1dLFGBX*EvF8eNI&;%DZ#OSEId2;TqEuW z!U?5PZEO^u82U62dYl!0p>HX<%N_Zc5RTzh+!gSX(jkVuBvw#6?AaL_A*7Nz>fA4y zc-+3M*000-3-x!J{)R1aN@#Z|zf%l|g%@J5cBXMn*8CK=saN3@Hg54Xs{6y$1IfJu zrY8MxpBC*~l;=>O^co;c3Ge}@@>VD4G8mm&)bilDF}!Fsqb3HkTu@7@Ghg~f%D z@m@ut!!40NXxkbezX@(~C#iDv#99tK zS)yag;kU87px>*l`D$=!R07HF=0?@yuN_f!ypUl6WZAy`58F_!$4_r!-Zt{sctW=k zhTUY9wsprKwIP#?TJP%b4BhCiofG31qte=;kJ3%G86pI8;)GhqYGC6y6ZwL)AIb^_ zphlZb_7Z^@L^rF&KVkcInrYf!4sEWc=`Ir!F;mPdHo}>GI-AY}8ELOMp4ie(bNLjw zcz6x$c~S&+!5|L$y>vOeoO8W14>p$Q(1l2l)wNsJ%47zCmDRbGBvz>5tbZS5$sztH z_UgD!+8rY&r{dnu&P3+v+XujzwjdeJ>szoF(zgYb>>OTEqJXYw_Yyo=y8Boq9)yE2 z>HZue(>-H@9W!>D#-_4tqIh*B62Ys2n;=ln0MUYhjWYC@q;NDCk;kZ&X?UJEj^oz` z`JRk(pBZTfwoD@AxBVU$Io1MqX9kUfi|Zmefzn=0YGJzfyp{PFl|d9;sLci$6CXby z9`EM%6CpU)53xfySC;%+42hHm9&%0KXV=T6#(Rpy`pGS#V>ABsA3R50Q5(Va(b)+j&WJw>W z<9)tmZITz9>8)+#cEj4GP-j(i`&O$ag=0`{1X@&e%=h^Zy1x(C3s8g{a4K6P;E_*@ z1`iH~7MJa31mHYgLYKJB7m_o;YQfBI+1I)gENW%EjO2NtzjaIsq!z#K zd%thXP6Bd~ryc_+#{B-ul0250QO~emI_7YFyWWbuiB6G$6EQlL?%|P5JZ@tu_zhWl z<$m$==AJros*k`J`?*_`&E<}D^@>J)bY>ygvc*8jg$8@5rA8^$3I}IB$4@y>e=4O| zf%Fo5;--DRNFMLdwTsd+$#LygniPS@DmkGsm$TWqjHoj9CGb~TNTE1AiZ#?Sned}f zv&f0psmKjN*P>9J!eaiA4_KeDWwr zK!@JZ)X+Gqg3Duu_Oc#}dMZ1ShyQC(ekA7GnDrUnou@MlMBokr=4syw2| zVp^*>|%&G{8?uBEat6HpWFc6Un8UU1d(l&jsOV0UyH)gvk z-<~1whff!ui=`v8crf}}3s8zznQ_E<)NTm(ZFnAPSy<02f&M}9EeMs3zJcqPc%W12 zy4~6PGp!(hQ#I8Vy=J=Onf-n4qOW7)cDhnXF$(7X%p%yEuOF6J^r6P3<3}V5+ZF(= z-Knn;+~z$iK+Z28XUlW>{C@5PQG*GQP=Q*?ws0?}gqm@g5vVO7Ne1m&v7j~721%ha zIA?6y{Bw`3T>wSQeZLVX*C;pP88+a`#F}RDmusbWvdfNK>*3g{%psG}3zW?WxgAAU zVnmP!e+?2#;qjCE2X3jgH7_B}P-yiho3vDbxE0;USaT{TInBv~T@JlrMr#H2HLri*H172T zoaWf~mlGpN2`hN&(RUKsp3A>Zpb;rf!%o6S;@;-#G1zSLU$f7PG4`dvzVHBEP%!^? zYyaEU@xSUS@GmC@iPe%UFF_S%(lvan z5ylYGpmSSlb{Oe>G6UalKTIl4F<7V9=edj(xu0n0&VDWKaKWiS%=~A3VyYjiX9^`w zj-{~VtKPxohCg*n-L}1sizhl)rYg}rVIo;O^q#Wx=wI1zGH>6Weq>8CYOLZq1KCb_ zb1?GPmL6oQSi)Yw*h zC2WfTd3lc=t0)pkFe$}Ju~WUv@3m~TkV3u;F+N5a<@Ski%4@D(C7jfa0DekGmtJ8& zV(JfbXu+Lgu?wcPtgNe90~vOH=##@y#Uf=%*+HX+s)9x`-2i3j9l3v^QpAFnr$c2l zL--H1326VklTogE6uljkL3_M{6{YiTb3Vz{j-j*UC+eF_=N8 z{#@v6#zz19Nkg{^9A@&20+8LQ+WSW95bH#!wU<<7^0to_b^iP0 z!&2I|uKLXO<0md$@j2pEG(ATCmcQ^t%4MaRXUKlLdfks_>t=vUPL#w zg!3IFhtXOx=I!tXOA}|`(a}3vpg1CArqY@=dm>cY*?rcuMYb{o=?ZiRN#wRu-H$GQ ze|1jdf?D@sDXeqgSKsaTQ*qHxJHDf?#By@HU2*mBybo9dj;5QWvp02eso`#Gt3o!_ z$?Iev#As)g;6n>bf zbhMco`6K}6E(kTp&Bc0+Qlk{=ryo~bW4rGO+{MfipH+#CIOS>EL|x2yb?MZ4*f}h! zTv|qN1$dyFx^8~mJ3svdgeAq_nRc<~gkV0(%?lnCx}=TUc%BT@jpiFAwgqMxtIDxQ z*yJk=o~sN5yW~H8ue@#XSRF}N%?=EIGhb`OWvxd7CdD%riY<2WZ@ATuI2D=ASFRjt zxZW<{<)P5DqJM1}$?tCmGkb9?YpD#tnw>_=VHjA63r*vUn-Qc^3&kMsKNq02Ga|>5 zc3zot9E!uA9Zs@pTj|n5#BXC_19c=)$7gPB;p;z6a~jo9xIqZqWW8S_b9}5tZe5A3 z(v21vpHrDx;m339R-*-X2;*UPFSL;K$yj;_p18F2Xf_FYngIQn@6X9e4dTxrB*&?Ca_9a1 z>HT+lt8xpz;faAHwjiBetvVTln&@im#o+3EVG==YWJ{HpV^FYhS1fk0H&N^=i4{!O zDzVX3^-ORcye0lomS!-Yg^MT#2Bmm-y`BvuCThmV5lLJ2NZyn+ma}{QHYN;~B73QDZhWSS# z{@Jhdx#15iqVcfs=}A?f0%z~cPSJR_iL@8*_AbHz{_r^KF=|(3!p-!pkNj?jwGKH6 zU)dXsWHLFr2%mQipD?;jpd4X#n~u|+Q`l}g9=Rse3=!;C00~n^*`!1(ULK_2q1sQy zfjYf4wRO30uImjl{bP(2!Z>2Wny+}t-qpuTr?rGoDpdM!)^MS$d9&^$dyuyO$r)#N zI}7HP)l*3TVR=U!Ef_AY3PCO&aHaB)Jj8&w(YvlIx=FaffBIX9tN2o5a?ed!h5mtS zVKvUV(~-*#Qjpl!t22m81~gdlm~PreRhD}@H(=FVfh9LB*ISN62C3wM%37{#&x9Vz z=lywYC`*Sd(srqn>?P#vqUhcCOY*8@eC+vx$nUPQJ1Rr1Ag`L?VbIUykn` zEGWI`)#EB2$$`oVKNhEuF#r7~rxIDb`1eN+BcGM(ajVMA21x_`+xzL&wCHa=QqML` zDsADoy4GTxl>t)-x5>4zgoR?lW>qmL>voK?ARe+kloJOG_1Xx(`9*&v@aqeP`rykF zz5hD}eKFC#$kzY0cz^wspMPDpe}9D}@Rzs-Q>rk^mpTk<04und4oI-#3)|uXd*X%7 zmiZF%M56tRb9?C_vjpxw_C;-L==xkAKn7_0Yv z>EaxY*mGMqT~^ece`Bj5bBD8`51I#Lg0mQsUXcO}1=rzilwwVmYnttKp*h@W4_4zA zrK=Xn;aMhz4ZU&B7UY)*ZTE%7ArDk4jZ+O2W<=^pM&8DiYRB+>RkOOO%Lq;>XT5Sn zR0ug`>eHC#Xq=?p5wkZ2hAm3Tb9o0>mrAh|9dcI{=oaX>NqOY&P0j+Ft7>N88|%nC zQ`jbqvTA|y>Q&yi@r8&B^PL|C8LS%mqdlx=_PDqCYUhvWlRKh`9sj&#H6cthG202; zoQ}cT@ct!J7gbNptRQsZuCpqxcsRL5%&CRWmjy}9R*F!_+>my)_R+X@Ir{*8#A>Zl zpI|KDqTTiRJ?xu$md=qwd1t4{n%Q*wit7dS%HfK*7;%*`lEW5-I)LW@_}1IO4Ce5L|F zY=+wK8daJ(;1xj`S)#kE>*o{oTjFy5OSG?scV7$@4CIWXI8Os)M`G-o@6Uo*)49v=&?VyYLRXEWPtlNK#&bM?QM_j303edn z-IWn>M0J-FJtetG3&#w?d;-q{Q~z`#4H5hPE_|K4R}&j(-K0}XTV2J7SFODxZX-7t z{wmi>)|4T-alI!Zcv*3P#Y1(O3t23A2n-Pm)9PfyND}eyi#RcP!yEb!Tau1&TiJl?!qgT!qJX44paP+;y1{&1%Pn zJ1OiaPKnq+XO)9*XiF^m2kx?=$DuL>WnE5#$75bTk*6$~&Jx;=aO#gU->G5C#85(| z??E<7nJjm=w4SqGsQ%Gjh`ItP+2c)t5`~r`A_Ii@$uu!&rm@ktOQDB`~GKASh?zNqRQlrRexx5~-pKn`IbG)h2N^7L-{7Gtx{M9;E>f)K|WM1lZI{mX@x)1l+(4x_Zo4l8&O0_jHP1>-8_5G(`q>M zAVP;2f-WW!%@XmX;Tb8qdM#POEu+tSpD*N)S3}jt6#?4sm?&S{k;|r1yQ{0I`0IG3 zDyQntTtTZzE*qQUKZb9%9NnX@#Sk{?i}g88c;i$=Dn|oe5u$HLzHVUWXRA?rK!1ZK zGq14qKf*rpQT9%!l zQOWJSLX;Nx(ZRVJr;MiryJ3BSom%Tn1L`2_eZhBIPQ~b8IAKi|FB(tu*A3N`p-bRO z88WtA1$4;PwZPXFVEal&3*@FI&3rr)kYZjaLhk|t(=9LT7<}UmZ7?_mbATBh@Rt{E zjDD3mq{eoeXzWi|q8CsosPo$l%0B6J^yZ!9EtWbZ*~pHWutSJ!<8wdrRQM-XVSOpQ z&)zidY!*X88p$%gG8}-PBgC^M79>}je9&V8**Mh&lA%Nuuw-+WPPvD5CxmI0+O^6I z@B|CrR~uQZk}4c9ty;Cns4eH z<(5*#F-aOF*kE&J z7)@KO1i53?NQZIyon7Q6oYhUSDYu|yFLZJkGMUJW5zdT6_jrn9v6ja+_xoD}iVxgq zd_Ib&;e<=0!W2hWCAs&4;-Q@arDe4HT)r#e4#e)lW_=};O-ibA+ue8N=aqXSWUI@{ z)22E2M%(m=-G7TFhi=)%yb z6###dZ_oh95V8wDS+U_F1K*~#)UmlZuwd{8TyQQQ5 z=UvlqMap>3)aTsh*=O*J#o99OTP=?N^QOB|9nNh66V~|PPb>G4ooLFmvET+@9ZKLv zWlfv0)O_1gy|rx$(4kR|Zj%}Ing%=nEa8ca%t6qx5J0^o!Xk|R2hOhM)AZ$$KC~LQ zcNgnXH!9tY9ZfuSm~5UV(d3K42z&Mnyzw1Rk3({fl^MR1KqX)-$m99wz?Vt{X@_2S zX563R6FHcOY%`=@sI~J~b?atnXqEOV)9OEP8(&+Ww|7lhjUaAKJVf%em^HhymO%l5 zO2jg*lci*LjE%&_%GVbcOrnY7qgmZSf>)O$3K|U!rh}O0Z;O6xvQhQGVO&=G7`9<9 z7$j)?pz!%l3hGuh;S`a=Mgs3msj;C{BjxY^7!1m3rPapDx{qYeZRl)`u-b6TX_ zPB{tV`EK{u&%+HwZu^ovoxff$AD}GO5ov}|-Oh4zF;0ohBZ4cx-38Y>RrM^G!b4KcuU?w0; zgYP>kTfDZdWvT%{IyoWJS02Yw9mGd}I_I|ZXJ&q0UfwFvgBy_zcqZLsfSKGfPoz5$KXWD^t=;i*R#N+n`PKVi>6tAU%`ZWJg`J{QEEHHU(0WumX_ z6F<_;lXlD6aN_@65xTPA_tVfyShi>;Z`V5A-n&@tG#n4MM=yG!h@ zhx;K6l6ai=}&H4Vgl53E% zf8Yc%y;_9iHt3{ZCj}$t98xpFMPvw|0X_szFJj+dr$j#mH|+7gsfNT>s{`v1lX4Ig zUQrEoj_%-G)*4rSa~n+%*0)F|5&O!BHK5Tr=CO9W`ddZCk0EuXBKkF;DJ~@p-*~PD zDul4EqjK^7#F*3A0)Xp(^(IB3PXi|%88i7lIPS9`-MS~@qAqKz5w>Kbn?`FjLDK6& z4@JtgN8lmHXO!kz2vj+FyMTa5SAG+|p0y+mDPG_~_DE=T8}8cU07z7ppwQ4OYhEb0 zyyrSon+o6P$CH)>;A(!emW=Bn|B#~FGRTQX60OVos62@sDP-Q|cRoz*F#A2!jNHb= zXjDvDNPk~Qi*lUCYyG3(w;hjx>U783=51h7mo+is;o_FgbIoR#CsE=9%XV#X(D15q zd?JgI?~F)ny-R;zsoo@@{?vt@oU-kpU4Jp?*Rd3$YWzL==;N1Q1p%@*v0pp%ov#g^ zIzbrJQ@WbGowi10?5pr-&U$w3h`;M<>}rq_36q&UdHEIE*1gFKdV9`}WLPLZa^gmf z^GE8S99F(PRa04d=tCFf5y?S_Wsf_BOuc&Q3f$?t!TWMqXZ}WA33~heY;4o*$_VgA zwc3N*yWd2hlTc`7`sppZD&K= z?+b$AzoG0)34hti^8zP_5&d31Q1haeU!X@YOC}7Lq|S5pvhpmLLLD^?W>yyd2M*iN z9GC{c-I1XPqhg%*$=#aaKXMEZSN8+k%K4{!2CH`UrOB05kGJT%4nB3Dh*OZRx)MN<@%gP^ zZMG9MwA{8SeOMwFA2pC`sZ?mu@BJlqjGqkw66pz@P`j$l$bmTL=tTc$k54JmFjQO?VXZJqLR zp?*#mE%#Gx2?}IR`J#SgkqNry?JQdcYw_4?F}L++R&jb19i+I>D?CM7NX~jVXfut= zn_OiPS9QIttc%=;6tJtr3}+n;uw;s=NaS*<=5ppb7wq$&WrmavIQ=P$9bh&yaY|v0 z#49xJLd02g?gYDuTElygcnGS^8;8L)@+W~Q*zDc(mX*G>CTFugoB|>x1aTPOhsIjV zE#M9{mLp8y^e@!Wwc@3|doMViTkZ;$S-}aeF(TphoQOAc@1TcyA#juy!!!CE_O6)U z^Zir=VvE@*2kQV>)gz@Lzbh%Fyp9YVoMwK06nbiU{1kQ|KGzR(ALbc16yZTF)7dY@ zzc>;D+RDY#HkA~GPd{fDYb(591ouj5PN)XTKQjww{&P!1gaUu(N^a6_?7W<*l z6J=SS4Y6<|Thu&=D!BX2L(98n!jUgq94{84CG3M2y_WYMh?9hfLXU zkbb!<6(6lAHT~8xX?7CLZk&k$e|WwjG8c{1;h@6i=2g+l+GV23v>%7z9q;oW||LX z9$MnlY#bsYlpMk@b@189SldJ2>t_K)+g#Vya$vq;ubN%}(wqN7)LRF&y*S_B!QI`R zA_0oKyE_DTcUrX27I#T-hvM#D+^rOMDFliaC@#HEdhh4?{{CSGcn>qoB-!1wXJ2Pl zv`kiXO{AI1^_3WArt+=wjh4}bA7IAl$~y>T$A#-nhsCeAEs%2wVZTe;=Rw$*h@NSa zw}cB8G}6>Q1sPXtn2%X}7tDVy?PS@W6Jtr7ZF1kKBk7QC<)kR-_RQ!)z*Uk+{#Vn$d&E9)`zVv61FQ8d#~Ef zhqnfy+5k14oGI4tmwMm1qIw7DO?Ye~DO(DF@Q1PZsnhi5hX=~Gt?kF#Q(O1rbJEP) z82zfvqtguzVGNP<-nQHME|y3HYTgM*W&1jab!)-GcxfG%+;k;9sFl=+9oSfL&G#AT z%u%?mXuMla1L=p>WD9dMQZuVfFk%)#4*X7Vn$|(i>|YWjEkh-M(CIq^E|;(0)X$15 zm#dC^)YEhGv7JU`ebWiepx~->D)@R&QA3HIR`42<)xL}zNHyG4vC+i8`@*K9*<{N~ zyJ^PWn=i35fV;__(w#hFr;UDa-x;|Z&pqR|Vuk-Dv!GGb^6JH&J1o{Zjt+Cad25s9 z)$LLu+d$*u!W9ouJzLG;7*DzrQ@*8dT1j%ziNj;Oq&l1EDUG+tF1gXaXMlKcN9Z4b zq4QB~HVCSYH`#GH`h{53^^^Nu>(fO~*PMy!EUj3in!nefud=nol9Y05>-tn_eIS1N z+*@^=g;~5rYZ-!1805Q;8(Z}T1<&2wNfoE#6A8t=IM~+=;mHg!I zjyYQiW;)bKfPfYT-gj;)z_~oXsNE%2p%Txd5l`$ub3ZDNFooj&)q{E6`bl~KzFo`L zub_^q0WRNFL2jV*LmXbMWyJ<-OYCC+W>5%&g81R?@h?xLn?8A%lD}jiOk0t`@aAq& z>HQ-8EzMxN@%O|7KkhQk)N>MfPN1LhpYL5M>P-E3RSH)%*YL}3C9pPbabu;S>W*9_ z!R*?1M6licKor!8a1$aAiBGIDItm&EvQ0?<^X0vK+gnxxL*{$fBy~9B3eI;n`z|Rr zjfi>npg6>O44c#CW#1)@^W@(n4K_wo1it_d}@(BML{-J~MYrh*7t#hk~ASDj@09d&D%nekGmn8k&15?N4DH@O4lH|DU?g*h@cxYPZ@aww8%8nGMY4>@XXYsl{9z5!W#+U^#|QD|XHW zn33cDSv-e%S2m1wN-Y;Fcd#@4@)vfKCAlZ00RFEIYo>&2m4w}SW{hmpD->WfbxnIK zm#1al4M!2DQUUcb&#SN8sYx~fL4+cNSHl~ss_wXbE}nET$0DP5Hv5-mY0zx>Zl$Ur z?{JZZjrESZvz9>}-2uD%PwaPz9wdahA0OW~T<<-(W)<7T5AUw&eU=scV^CV%^wHbN z<&Ex}EHFmQ<)vIFOGuEnyZ*24a+B>^8{o)SGO|WtMYHabx1y0(IX$_io2#4TXZ5-) zcHy40kYOmJ1X){Dgx{A7Gs5$3w@=ZfXoRU5Vh)>cJ-<>L@HWlxOznpgU3Zi5ZOTT7 zY7-CbgWTpX771%nLjtfRld}n*fIk?v#G(<)>DFqH=e}(08yn(b?7oRb@WQc zOkg2~D`zCs$ zqj52lP}>*_v=Svo4tBA(X!O>D(`F?bURI~hKYJhpY99(fg}o}>47@Juc++N%u(SJ#%vkIU_Y9%pvF zOw}fm;-B~I?hqMGH;UZUPrs?JUaZOM)=(P)K{b$9uDIhZh=G(fdGt7PIF76qB0cm$C~;`qR)5Jwi`_Zd8PRS z)he=OR;%2*qvK7FPI^Rg3=9MK{40$Y>SQJuTFX1GMO}i|KXDDFO2>I)mj0NK7xd+7 ztaZ=-(qbf|bVJkLNN7!F!i`Y99iWUPP10aq@Z%lGsQ62S$L9BG%NR`eGK3Cw>yk=K zm?xw{+c>42NpjAHy=#CZKY%1~dh9MkBQ99EuhwDfQFwAqE_OOnl5*NWXitzSNxgqZ z``vn5HEknUOsL_NRiSb z-RT9%!W!NV>~73wVWGvkgRT%)2~ldyCUj5*9ArNCi#(&w-%+vWiKQW-Fi>g=rA{`Y zrhH(3Hdj4CY1{XDSkb3OSMyFZG8_*~kf;(pO_#&_afu zk}Sp9^Gzs|zp4F}=ktXZO*q`^ziqePPV@21wv!26Gd+~H3m8omlC%pWZ1}YvID$r@ud>w;>nwxs3F__ztUX?wsrEzQ1W+Q4Y(|o!_5SR$6I7mgR0`Zw`K1AAp}ERbURQC7 zgjSz@=`!&-x4ZNXyb&?5`8qimOKm~=QmW_pcwaXCs&$gTCgo&7h`fsB5;;oqlGikP z43}ec+ukucU!atCH`a+4j;Dh!Plz9~Y+iyEDU~u{9+)4LnxEuMhp-V{KH3vAl zJL^vAKu%W)l+5t~zsv7fTdsy@lyG8v)aV^E?$|kSuG;4UZpGkqzPUwzx3PHe*+q~k zQ4%8iH92%6ecvr+rBB6o!!`o7F)m`TKbp+@PuAf)rUAuT>pd>T3xADU;|6Vm&Ova` z_(%$~hU-*v6TY?}pRWkUb5vQjPhA0|#|nRqh85e^QSYoJ(7*9Q1-lEwLgU6cl6i7C zJ0J~QBB$d%t}rv~vuG%*#X|#ZQZY)OA{xnx(f(5~S^$!Zs&g{9_Aqfn7%5`&C~|>8 z0PGe^Cj5Zl-c@oz4;Q5-BdOCb2|lHqip(pSm!X)5&O7Dm67)UB1fD@G_O2~g!y}8o zq)AuSDj6^1iwcA7@0Wk@S{#!-#u(+>Ld(@P0+B) z{I86S`Jc{x^p|h=my`cLrTeep>OV{K|5nGa_3>Y3lgxh=8n#vb`!`@{9bGtdDe=EE z_z@}WE5hVIfX+<;J|p3^EP`DHPH!?|7bH=9bo_He|I>q31)id)!0tIrWE zn2^}ck8DyoR&B1sG=0ge#aFZU{EN_5S!Uh&) zI*%wu#@AxEm0Ihw>#ulrK#JsD4H`-umXLBXC2pe?yME>!cB6KJ;0+gbFCqNuABlZ- z*OUf0tYAV_9t6zDv3oT;O|TZ0cnIieN{5j$3if7m zqBanV6pPJIy+qmiJT+u7B86rtuYe~Z_-24@0)2Z=&VKVd zB8;=0?*p9}ImyFQaU@o}%p%;8LL1JkXMhD5yFk#%o2um7wda+Q-OrqOT;BGyZCpYn z-*XA6-X$2Z>u9Cv*eV8!>v{Dmz zJ4pONN+sPoQ{5Ix!m5?tY&_J{N(ghtOFAizP0ZNHgW2T~no)eD8StlCXl2huXKO{o zhM33Z3)UsuF8y;U&vKR0d2_8@)9ifGg_DUKqkUB0oS1wh+9+#C436Ihn(qo|6#Vv7X?s`i+je=NB&?PMxX{YUPR(Idxur&cJp|*W0^YJJ{!Yv>6p>r zPP7cC@nt+Z>uJI~IFyASpmqU)UN(mxqMo%akyxFFw4j0okHNf7;fbrOxQ~ak9}>1z z;oa4{eEDiUkQA_z*85z%V`sqm-{k?=+WM+$7`T2}5@v(zf!Z!C18tph7T#Vja?U(r zJ0MeJ$9b9ij~M}kn-rhWXSOb5Rwsq8-!dxL^a>9WJ%I$-;a&yi@BRVo=u|=bYt?co zy}|o3CM+(L*Q;GS>w0*WfGX$N8(8dFrw$^%0y;A|F2DVjy46P+Ah{$Vb}~hZMQe%s zb{%lS|A*hXDFn%De#|M43JOsru@%^8)?eA*Ztg1_;NjV#@p74>6OHbJ9=^l-uU{lr`TDeXPXlCK&R@44=9fQg}sno%seSOD2z2nfINds1S zxHFf1=K_9rB0=<}K3VQz7YVoS(X53V!Rp+N zmZib&{_rthb!Sm@GG1Ue_0oci6hrhw?nIF+r7Z)0wj2qn@{7Bh;*{R?7;-C}yCjy; zu+Sr(;$A*zW3_Snc?#PSKJ0Tgz9inLYjM}yQ#X&lv-zcO`i0sl<|4J zr$io>$a$phyK_=pp1BH%#3|!pA~OAUW9`2D-P_g>flhG`nDkn~Joc1C>8(&AOF83> z+|$$hE9a_}Go?TpHr5<6VxbfJNeq&YBt3Z?>pRcV(O$RcK)E-?i%sxJ8y{=SAC}5d z)8BE?Fc916Cj)BP=x9G{wr?y~n$b-xa}i9cO^*^^(JdRHB1tVD{sTBrd3FqilZ)fj z3N?B`;?D?P^LSPL4j+u=_>fwnOoHnzG}RVl*~ug09zU$$_g+G2<*2yA1)vtQJjS`zsY}?Tt4jtpRAjMo-TNQ>E)B z9T==OByOy7Rq5;^?9srmxmU7<7!^8wFlstR&Cv;$s?N7j!rfDE%R}Q9*>2u)s!v9k z?rA>~7k2wntq%Fc5-XU@PA9G!z33cTT+>kjr4Gt{v@yEkMdnpIZ=<`|MllfeX}{U7 zWP+;2F+_!$GLB!PU4tNEQm&l*?5`GCRdxN*>|zS^xiZNze1@G zmezaH2N|vzog)z=-wL?BMbfB{WWHW9OLKn2Hg!Tjk7Y%>?#hAe{>_q{49}iIov1so zj1kk}=(n*q|MI8(gnhLb+=OO7J_;%cZxLouWt@X>xJfdc8X7`e8v-rvHuBU)jwPM)Y7+>rwcuIc1qPpLI9UKk=wk>qxpcp37hkyaf-F zw*R`m{w}Kj@8j;@`u@M_{x7Qde~$nRU{(LGi!1_`MF0Pa``^~U8TLCwB!D<tX{rIj@ojF%N1ff2`ow{fNnF95L=ZWOB5soxKCWZ&-a>wb~{X( z0Wf`36C@{lf(cd1xKh4~kzHp=g@i@|gozhjYM-6-ri}P9U)a341zZ#!@u!tpu_nt( z^*U|pPCvL1|H!GDOmRm>L1D8>ja8EiZn7i9!HfV|FB?xQGh#yUpzqWIZoa z3rZ5%Cs1JRyQm}J&|9>)ay4YXf4Z3e$?V%Aj4=HSvFP|QGB&DAXX^CnQ}QG_nDCY3 zK$6!)hPYM#VOf5Q4{a*=5i{#oxJ|k_Ka;{lsHAI?GH#1q{_r_<-qF(Sre?B<6|{Tr zk$7~IcHeAR!-Cy8x}@93JKXoh`K-sN$Lccd9d98>D;_y%B6)_f-qIGkkY$zQ!o-)K z)!w!;q90k1rxOQe9>JVRi(&AeQXoV^xeX0oFIX^mOcA+4E=Z5!ijKl+7Hd)(hs#=o zKkMI-0szcAYuo(!yL_ftJ6(f(qFhqquW8u%hRMiCQ>=&9R~~MTLCfdQxf?*M$NJ93 zQdn~QJqr3 zaXRf!|8zQWqgt`)`_j{gy>ygYj;MtqPzK*h`@e-x2rRP>aD4x!dVqtYy0?|cj%CD{*fRut6@KdhE2zQ#9+*W@ag%`WAT$N z&fwSQbF;ulk=A7n<`3X~m{SekDznM<9cE_PR7)WRDUxVg>d9DTovOK5o(cMNCj>f` zINLNCy}eOzQ*o{@e>9DhK*F88O|)@kEH`f{2dM!+!aJ+XltM?qb9;^*6XD(L^JvI_kI&0>rx+E&QWH*up* zzbRLSjwB_7jN8e;Z)55++$%q}6?|9kzOAJ?$yYHF$B8%RbQf8}o5;34vEAXt+uk+e zcrY;dsJ)Av;?ru|W-_2fg+dX&DkDTJH->6%lu8`hnoyompWH}Lcaq#J0XMZXkRr>$mVTo-k~tK@9q644u|xAoG6n>&>MS!XMj97ps zL6DBoi1gt{4Dd>Bs&z6kV|h6La7n)#IYchKM{!ME*6%{5*Kf>6&*{np0!_<8)vUADb<6+B(#_ju# z8bj6pg2QDCac2G!lU-P zNkK{f4$TzbZ845kU`~%>iERj3nmrd7K$GtDCI_@T78B%H{pnRT=VGB%r>1Y1v3P1K z7y7k|$yC3&hK5eOr~iF>;CiKEhce~MHx+eC|Fh2uu4ojWfk0oU4=(D?>b5#QKl82` zM5Lbluid))G~PU)`cgSZrFd8Abf7eW-w9E{NC!_htm%$W-vO1@L-jc zUN{>vEU=Cic60?Bf&O=L1smpD|5E|}UN8SeV8Q4huw^;-U!OQ^)c@NH{GS#8o0tBV zkN`Wl(xN+pu|;6QT^c9j7*e`~-0+-@#w$SpiTDYy)Y1_~E9j9}gLXs|9AExvj#V>a z&h{Uj5THeN`xZF;a}&_OfB2eIE@oZ*s=QF|SN|sd;O9GG(_WquO-?#`pu@&Fhs)<+ zkrnh6dBfa1fh^vvhvwjS!FEO2>ZU@i5fj~T^S5iYbsbDK(67($&fRUY$HRz<3MdjY zMO!Z8CI<|D^sJ}RM5y1fRSK-st_>VLeDaWvg70Uz4EN7AwL>xj1BqH6Lsp9FJRlnN zi5NH+f}3LGo?sixT&)IP!Z7FV3DJb|AVGY&&!*{C%S*GB0y{7mYuH4?Z|+7<0IuAg zGFQ734~ZG_kXZwC*V9yf%A3aXN-;VPFC35ft>V6S)knAPfpziq7dAJ26Qwt72-p&G znUfuzpxNZc`b9hc?SWM6(pqbjTAfDs(tO}%C?Te?5XJ4DI(so3wIR$V<_QA@D8Vg{(?yvKum&d zT~&Vj>4%%T;FjM=%q-rFV-rC}3`va0h{R0a!BuG-^JPmK&HZW^7nsAmgC{u- zR=!r&WE$b14}KOs6;F_qL?q8o?eEHle!jit&SS`CMWD?z=aKHfT6wq=S#jgQR$Cvq zon5mC_A2mEq_+`?-*f~wHMS#r2J&L{E?ek`kl(Ps|7KzU!%^EN!0x00>^gA9u=N&9 z^Xe}||J3pEbkCmv-+mn5X!K~vF-IDZ?&h}KwAR*gkYOx1aA>h5+1sIEpeE*u;&j!} zcag2vgjRY4hDfXI@geBmT)KQ=K%lFb4kR0gnBQ{W36aV&Ro zG%b72r0F2!q>zEOwW%kH?G1f8IJzx-dr$_87MK$zKwm>!CL8Mh0bs2%j^11QxNJWK z8obisW{F;xp&o)3N8iv+x*KKpyV1a165;4I<)H61*+H3=rc1v{DV1!#wW>|sQD=F0 zg1!&n@b)&L3lFJjZ(9p|4$QgXpRxnD8MY~iPA_*S%T%$fpN*AkEZ6EAD_Eg&gMwu= zj0{)tRg;yzpGzO_v^s#Zsc|lXv@!aB3#C@0ZW1*L(2sCfI!5yu0-`eGr+_M9{%rHg zmSqCwLuKKM0^{dMicB<%YQEtcq#daIJ0BVu_6_U)lo(C1zq``GsQq1?Y_X^Q3? z9FLP^p>Nr)B_69y7)j9tD=_4$%1>PePm&-i`%xH&Q)8>I*>a?3W)=KtVZPW7Vv3C+ zT)x|}Ai^r4Tk~C5zztaKp=#jLGdak@8=w}{X&`UHljIuTdz!SzR~M_j0!H*Y&kIRq z>MF{UhIp4vmg{hM)vEs}q=8BA%-mUWDQeGQl0G*G7C*H0QL!geC-H#El{$!E7?&^S zQ|ae>;>sXwY)Ftn;`Ml$)Usvot{&cMoN;ln8r&l=n%v$J0ar?2*MH>s3C2FhM6^X< zE9Pa$iNZMjWMRBg5qgzZjKApHwA3)BOF#k9>a!KY!#RCu1hrVr^_T{ZiZIqUx55h$NeE04;_H2%{EG z0PSMp-4!f#JI1)Xt>7@41|6iIitq3{i~puPnUY&~G{RS7KELQb|?C$oFQ7wSgpB```E6 zjl8tzDo9)Z)B9n4!+#t6e|3ca^n(9e)c@`mGg|SJcM-3HMYfE3XyGgSsX5o?^8$bQ zttj8|^(-&+9SyRb4So$Ey8r!L2nq2jm$^nqwF?VD#aJ}@SPb9E{}_dpy3@? z-~TMTKNc3ee9bkT-ngk)>TvxaP?v@;&+Ljb(oQwRJvr-Z@|_w zk;lluUIibn^QHts&V?fLr-kkTeoqtYOP&4rW^iJ|5XU@IqE57a!YZ+#uQ;drFVh^q z%Vg2kenH`TWC_H}&J=6K^At_`)@S;5PetAN=9TK^6bewyK@n6K$TX|8MYg7fTX{{4 z$!`yItG5_zDXlhycl(-ELv7&BB_Kb=tep1Z8-OudcwB{1js4U3tgSV0_nWu#O2%_= z$vWiIHo%SknO54vD}muGSZTRqJBNe`7_>{B7MQBl`Vt@fTq#Z=OtYzK>5p+wSf?v z=fa?JPZt`k56iKD_GiBfYKzc=!kPYYSJ%vzgpk&OmHnOi`oLDlU3KMO1?x1wxY+M; z-b!peCyj9iRs4#{gJ+9k;ndOBExKWoBtKbb^PJ|Y<4Lljhw-pm|L(txKU1Ou;siM{ zDOsDnl}%lJcGxR`GKqIoPJ#%mR)2Pbvp5AfWv;=fzttN&Pz;Lei^+i-O?By z1z6liU6@i%-%jpddoYtz`X(q{qv&Y#m&0SweB-X%cOEfK0^E?ryfIm;^`Vu0S&p}f zf;jYQOi5H)yyM%-q^7A zCx1^nDIfnSMZD#q=?2l6u8uUien&+g>DahhH?JhnaPo;@xzovXiYN<*EGp4@D$5oE z+Bac5w?mfwQ&;kYy=3Bk86Lf-R#Ryp2CApD1YRe(J;QasICZFiSgBprf`ZSHRZ?}& zSC#3aZopTk%4WSWURCI%R=V@$03FC zBU0?Bn#{Ld!Wc?){Vkt0C++!oftFok&tHDZqaxLCRo0QeR(R<%NzYP6(R+2iy=o5N zDYg7qsWG}LdGno0J1J1WHHUMG`t!TdSErEunYs3f6<3F*(n#wd6&OW8T&%laWba*hp0=xDv~zSyVL32H?eN>0Qbhc{$Zu% zU5X8rZ;Q$*@MBzmW~q8JE2iv_jc%meju%R8EGB-2?0)+>2J~cricF>MMsCa9PU zCv5F^uCOrr!(?mxh7DtY{tdw&Z%=3{^Hetfr)|PZa z778k3{M`S+c&f1RPgO!&>O2~daj<|5n5YO&dubLG5MdgLrta40gIjJkRKaIV5BKq90`lz@fVKQnoLBZ`5rW`9$f!VN^oTB}Mt%Zx?cP)jh{Skt3JO4TD14}sX zFB{S1E+%VJDXABWpPga1=&(R_n8X18HxU-rPDK9imJaqa-M{DQf1%!g0pHxP?_keJ zp~9<2mVAfldz#(;4;_?`9mnedSBIv`L0FA@>8h)FLuFCML-x?B{Q;ll4b{c#%}*Da zqGN|>^t0*j@jVLgO8e|BQ(+_8Sb{_Se)vb)U4=(J{+KSlI=0H!U&$!11LZrM_F~36OmE z>()Khtmgg6g0Mr1w?k5fus33pfEt8-yrSD|=o2a$S*WDQpA5~^3o32G?nd=4$AF+ybfxZO@gabw!O8l< znH-|}oe5)fmJ!qC6O5|B0~uPE_0h8!jPfThf&AX_sNtenw(m$3`VOQ}n=k8!-}ZS2s{%#NjuWF5QG7Hm8~@6ODhTZlqQqxFK=%ItAbPP%A*6}Za@Ra@XC`@rcc+2AAqGu&_mb=rvv~rD zkDeN|N}I1l!ynbFw)!3g*FG(Jm`>>&B6xwm7DM-5-@|dIBXWODiSTiOU?6(E1RrC4pySy@}2Qw|zB&ufjp+%RIKWQ%3m>LyUA&8;gFx}}D?^P35x zZ|GB5G~}y8KLQ#9S%5ODJ;tfRqdsg z`Cbzg_E2m@xL=&Uj(Q~BcdOUMctEbZnRfZMu~{sJr|x5oHKu{qm`QcuDy)^JPF(=E zB0F#xl})|bHZVz^*iXj)P%a&~M8^BooQdbUK*t(>x8jW!r-z5il>N9=DlBPrtP7}X z(|^?rlAHgGm>=b!|Dfl0i%RT4HKC4w=pTdrS*5xfl*jp{EQhTDi>Hf)g7JaDlJZC} zFmZJ0YiYWsuH9WK%~hv=&?vS^x#Wl~>-1jHb|<*-t`Wg4kJNE!F5>;EvhBCof!lVP zjN8qR0v-{K-{f2vY0R3}p7>il6Av@R{nShgkrv zQM$S=Qu8V7IQKY$G!jC>w)^|TJejsLag3%EN2B;gD+^B_`LkDlGQH=P-1g{b2&kzM z!=@;RRnzYAE*`Pxfa(aalB{vuvJo0eJhOMCsQbhZ96pNqvB!my2hHK?8*!VBl%R17 z2+**9_-L_j+CE>MV&?=mULfHbdL`@x_F%lf8tNT9(EL$9+I-Q;hTeY2L$?zb(K^r& zu%?)ne{auGm$0gRbvK338RVVnT0KK|-!&?u5P@9NZvo?wf_Aa7$;H5FZVgS4mBrP6 z0GYLnB?*EXtC!4}WdUMd`-RJVFyC*+?lt-iQp2ttIG4 z>sx?hXFXT0M#2t!kv2sdqWy_G|BIgbYP^-gs`anEn4}6SVf2cKF3C;sc3gjs0PE2F z&}LI*v0Nx-O}uVWEUsewP9L`bMdFu!^RkBA#t{2}hDP6-3&Wr4Ksa(L94$?i`9_ES ze7Lm$qEQ8KEL!Lkdc+14r|eSdQBh@?opyowN2FSXxtL+P*)y^-P3y0Ds3Tvy_T#e2 z{vu?SCMlAqlarx<7Qd!yd+tPjbfH}3=Lc?tkfuobBBRN(bxvH2xZ@4khlScqz{IEu zxM-AB6pKt+G&Dav%q4%Yr4G6+gVOKsWpYYFt@KDk0ZSeaCF(Uvd*yS@VabK>2eL}Y zainA&yn9P8Gz8#OkIybx&~>b1gEdjq9UU(Lmr8MHn6e?g243rX1A*v+7p9GcM&91` zqj;*U3E9KAaCFjrt+l1I#!SjUqNc)uX?$e2yY(hF#1GvrfB4Nz5J}*neCcdeiZisL zL?{NQR+o44{-oG`bchYAQAr|E^uLve4?M25x{)S6F3vZNo|U^gSGSLrtN!sxe6qvBortf-tOv>$r&zE<`XTS} zzzbLWx<^6`vr3GHENGS_9{})m*+}h=3ngXrtlPw+SbL7!yw;(6D;Hyn3)fij9Sy2N z5%-nsom#m1ACf<@iOP`SWKhM2(toRRRZB+%ygx#U(37N<;W;!y7}oc>+c=cyimi)g zj5IQX+9&7Szo{?PcV>Mvh~%owL-EoZR<1h_i{;LNGNuS<5w$BB#q?P?F+9n$(E@Y{ z#=*^~TFGUKk5b|@j+Z4^#3&o(@snzYvmx31PIOVEDGcruIwPOq?~hGIKTdX?BFSNY z9ks<*?&Wu|f89z47UC?tvve~GQU=onNisxa@P*oMF`Ry7D>nLYE@HlQBCxdR15_j! zX>tBOt(j22$3x(IQlmc3zFN!X_G!}y+j;bYyL>F35YT7__wFf8@#c=G)uF#6iU5Ux z9XQ5JU&qtnl}tsko*i!gr(8U`JfI4Sfo*Yt>Hp)cm&0gs@0z|eI-u=5oW_%C#>&j? zYnYuHEVz(&I%tgzQWegQ|BMH+xW^7v;Qz94#>%dn$z#_%97o1rowli(^QURdBC6E& zR%U{QCV6^>cbGX*KR1k?IJm#_XzsIQxhi>=ixv;w_)pr`631*AzbW!_Z|QE_q1xvq zac3!x(lnuH=!f*INj`V%*OFscu+iQUk!o`ie2lF_L<$wP|DoCF54y$^6dm>2NByAK zAqXZ@wttO{Hhm-hbIhX;@B@b^V5&`PW_fZ!h$BHBH2gz8Lv;3-i}UsSEfhD@v0zP$0?(MiwD~ z4F3EM5LccrTUJ&@P2q>(JJ`c{f52j)>Kp-iC$$JWPRi{cq;Hzv*GNu)_#Z$hTLqu4 zDg797#;krMWM1x^FfIz)VReAE44oF1n|JO4g{XUUO7qQVB*8ZY>TDtd=_l`WRh(?P42XH+)H`fNrzTscj{^?r7Yh;YeX2}n0pkOu>fb+k^g#V5;_dXLq8oLo% zs#3aES|fg0DTn-qSOi6-2%_SCxrc#ML+sZGvRP_&cql&0nQ&2*-s zpO>XZpRK`b{Qf3Zq|#rcRo{Z-kr}q)^SsnbNg{vZB!qXrw6H%Tr#Moi2lBFaE?$kL_h$+f}CXQ3i+cp4et?2+VuVzxI z|H+$$re6A3>)OebsPP*2aPm03z$Al?=_}hm0JSR7DTe0~>yLc%$Wy?AN41#7EBaWb zk&z?=upk3Bd8hoN>w9^s!0eI;CR%jzj##V)x2?c?WQf#*KydjqaBku*1-&>ivKO|_uIs6;ixJi1skD}=i} zZEtH6j9+~^%5{cqJC!7>1*pRg!R5?~h*1;_L0Zn^K!gm)xN6YG683kT(QY5tj|OUH zUZ^w5F>lBy2T`sAawG8sFV19S1-{i3Mbv#*F#t|)Q7L!4aCEvHj>Ee`FvTOHrqOfq z7B_CF^bp@snu4z>9bv|m#qqhX7ZUo%){;2J`fa4=re8??qhFe6$A4FBHYyCRtOhbr zv6hEY(d9}mOofq-CBztoHmNTSGStcG`u>GOH`sa9DV^Z3 zo}I7^h4fL{kAHdxI;Poo+5A_20l25X9j?9^Z z>I)P2?Wya_TNmfGfdvNhkn6+`Kbntwaj(xu24I`s1ZpluIMe8&)ETOQxwLVt3o7YF z@*CZhyu$gGVT8%+4lzAE^(^`k$|lsb%m^)wcE-EP)};V)oq(~O&7HNNDCXqVL!p?( z19>_;4|h&4ii)x10{Ts9OXz9(+i>GXRokHmoq^qozKK{E-AIbNH;41Iy`7j`_d zx=-~pGsZ{K^4=!w#%F0c&eN}&`Zn~W$F7Vk;c~8<4Br855H_Lj`+h9f!O^4o0n;>lLEjR_~ZI|>DqVZ z+bVv^a$$+Fig4NQlh=~;FnbGcORtS8>9Eo!h8tQyu3y}ANaoKpO*-yz_Km7Ug&R3X zK0#dL$;`f3RCy9Xbui-zN<-$Cnqt?u5X)2^y{x=C=HTOxpA!~UKqrD6=lTn+u_-lg zhNftA$JxjnXk}{dI*u=T`g_>l7!r|>Us=xzxL9L?NfO$o^C0{J&4Smhu$$YM2nXn> zT~o%`XhM(_!m}6n{Jd-3rS#o$@7I{rl#$7ixJDa0(@&lZ20qNY#T2G~byYX6X>?+o z2zDcfQ}{K~NsSru3M5^qlR66p}>@)n| zwZC^(xN`|A%x}d%1RP?EsDW>Pk&U61kY3|TZ+%G@Jk~oW1+-7dTad2H9DS>_>DJPG zr7xm&-6L%bhc{ZC==e;nk5>MqSXiCJ}A$=FCK0f_BOkqnl@iyEtUCTN{lbq9XOObhl_y%S%&NnfMCKq|%Iz?-I zncEV13t{C{u%ulPAuOIbC`d7iO7xe#9e4NWkj$7F-`$)aC#VqbvApRE{ln^7v6Zhx zhI4EA_@El_H+>24ie+1ulAY&#DYf$Ss%Ask8?IBVPD~~9;X6_IRucmAo_@kiRN-;G z#?q|1#+nBmtvaL@LCni_xcyuq+~ehj@kN~7$8ZRW9#b0X@Luk9imEYGx?#nOO>(r$ zIUAREEHfF!zfHb!eHk%7=kuwtwKR#T!^Wj@47R~Lkcv9Yy;DJMB%gHXlHsu$g{qzc z4eo0AT23uZy~yL1N`WiV)Bx+p^tX3twdw>k6doB2vJ4NeLN`3Fx3^oDSc%|X6!?-y zbED~|)vTYqbEZs9sXhdf|9mFVydn*1xXxW|-}UYD+U_K%8p6|N7Fc#- zLKY@I(2j^f=;>Zjw+Poz#ikds<g!QL6!W3A%)S#xB;3_+@l<4?q8~8Y!ln<=~{S zpDl2X6|90QeZm2fJHS@ymF53tS__;dK0SJZz%t%|F7?L!{kq_B$Gy?eIacdw8xn8D zldW1O=Q>b~Dw z44xvTJ!QKAvKP1?ZW?|LH5}jnQ)_1`W*foj1=Z(-v#GrElSrdU^+sqXi2x_tri&gl zU?aNxh(!bWfh$rD%dIjN7=_5(Ny#c@076TnCdV#Y(aLc39v+37kR`d| z_Qv8jVP$lP;EV(@^dpr^ah1hLOxk8Wy}3?BcbaCmlR)=-N%R%-ukZ{>w889bvRyK} zy#sAeAOzW(#x;sfSJO-$+%#hG(UOW&=bMt$I0j~}#YkK9s@|Vxdij0i@dN%TM_lLI zVxF&QBdFiMOi-xW6Web?FBtaN=bb7v2NkJzpfhNdyri*~Fune7i}kMtg~$rH`P+fP z3@?9ASN<}azW-I7{}(V8bO>-SMPymHbxLmhxe-Mp(x|p|KG?vwV#`Ip7GcC^A&0Y8_tRerEx|C$fxc^clVgE2T3%poIc?PlVm}M3R zMSK9MDKJ7wMu&qnEG^mU%G(`lFYDgf9j&c58@J1tTpJ$rzm3h?aSn=!h;Z6*)uMfxA>{{W~+ zN;R}WyKPf@)BeZdy_BeN$VxUgKf6w1E2++HR%*H791f+&q;^1t=tQD>{So&EqW=KQ z739aIK9$O!n8oU$Kg*c*y2<|VdU$KSmmY+}2;5bXytRcqw;`-_R;;;KGij^B@DK03 zu9Cfka+7mi6S|yeeg@R3zCAtfEhL8)>vE-V%n5PlMr|7T3-d}gi8EeQ)hOL=VY947K>@7agp4=?Aeggw_?7S`obdy&YqMYK>v+K_wcj9U$tq45?$!O;Kr-T<4jK9I!R^IGV>!{=0m)vc20ycy;tP3k9L(v1{HN#C z_&}9lU|6kYy*)Z9!|^oGjesd!T3~F~vWb;#L>gW*VI-Pi-$>GX*8R`GVQ@~a&0h1K zQt$pq@VMD$)5Tt>i^=PFFN%5V#_c)i#-2h~B9#4wy-W?=qN{Vl-(5%(ksX}H?lu~- z;phtw4N~vMauzVholm#ZdEq~uY3FPf6`LqA;dyHhSd#*X>g~YYQ#K^UgX};B`0&Q9<`7wzw zJ{@ULqT(@?Z(4@5iC4+->a%jyx}mP}6<$gfiO93Z;$YL++4cezqRDbx0YLtqp3i>w zGTB;x_PKccks+Hd9+URh6BVI7^1ksgP_IJJ&{_q^wR(b=Z7A^^*rBy}8U+2Qlb&lo zsU|5zLoF!|2lH$JA(~fSAzH>OR94VA#1?i6LUy1wh^iOyq!Y>A7`olIxZVQLuYEM< zPrHngv!hV>Z2q#}ej1m4^_??3mpgv{I<){8j#L5?%^CpkdERZ4(;8%|q93vto zm`0$;T)$(H9WI*qQK9)rsfmTPuUyr6!56f?j>6>qt3GS?R}f+=-mUO_QWuCMpU2rm zlvS7N?(d3(L!EKVG4s&7#y^it+SqB9`$3Vv=F5DVP)hnB56doVreTjfADQ|Ug~-Si z*U;BQRwwb&lwVfJ^Q#2^a-`?GtUc6lqZ#}WqOap;V>C8sIe7g`{bJ1%*dT|)p;p|fq$azza^+qWDQv6d3soo-jop$%1tkkARR*cFu;?6N?sp%0 zhBjq+PBxu%Xw#Iw@CQLw$JPA9J0GYx0(CRKsvCmMGpl>$QSJ4%F8U%cy~&r?4mKSG z#XqLY`zIeP_XdSyE8KQ%xLwsgOG}qZ8eR~H#2~b&1fZt{riC5Kxkt<8riv*w9=0!p zd89edYTdRNYpHsFvI8_sj*TT_e~LL|@e;Ps2)}TOGUjMU*rd;jRw3o&@5#&*^wF++ zSx0pF^mFG6Uby^kt(ilc46bPte+ce(H4X>g7F_ra;)~I;by_-QC^r+ff6gmqS1pKL zq)F%LSABmQ=AB6@2>91olBr-X{aGnF-?I;%ggdb`cIs=l45y)d_*Fz%!VE!|BQg&_ zYY}(~*HT@7sKSdp6JpBpQ&s@aGtYTgpsct&1v_Q8rcoW(h&R^8QxGAZrU-F$Q{7+u zt&GD!ABmx(Ym8JRzUqFdix>uz2fr_}5_uJ>RzQzHEf7z2 zcG6wQ3V1#ZiUeAnR^t6qR#=B?%t$qkKXmmA%i8s>L0r0^HwzQ&s3}$>^#f%$KR)W$ z($d9v?2YH_D{t6nB-sl2V9GRa98x(7Za{LOz+OrDM6BXOGR5VMDyfLRr^W8(4{s#3 zs2^2x_J|%XHRX;Gqn=WAzH6|ZbytJZow*pT>}qoiJr(EEn|YEz3~dvpW%(VS@-Hu& z6O_9khkvXSX`5SnsPqLa-q%{V0(XOxv{c8m-?4ipbzx;r(5rFCW636ZkSDvqtg5U6 z!#M)^<84z3sWq9A-`DdS5{O==Wfs=CW80f&>9vsj^azjbr$Vx+*t=&0& zSZMnboKHxvC%O^f0HBWS#-&RJc>R|t`X7`xA{m}I`ft>NTay0^BL7bd`~OW} zH*m>}bf@?Afzr|$o5`)V%WygkluTwCtmV-F?g|Cpn{a9PIGtN~{COx^n}t}dag*uA z(KrW%RF^fqSnJdU7`r+3QfC*oey|IW^hy#dd$M(0kt=2G-agd2#f0Y7okek&B73j~ zND4q?h-?=rulX8H3w27e5YM+WO>e^P_*aPEJBXxk$L>B<@(j-jnn|Ns|5Z!1ydwQ2FlZO-OTlNbcqIw6#=Ly5_Qed;O*Wq|EoXwKc@xw<90dyh_9Y>`VXLJr6)W1kW}(h%|}plyEpZbYo>fmbD)mw zR-Ev1Gc%EIjQTVAAYZ{ugLZE)^xUb)tW8+Jxqi=`X<~{`g=#jH#v)&P{rlHmM`iTMWAs+CTJ$hV5r7< zSG`I?i?>*Aw^LQ3EXdtzRX~obMwd@{;eC~X`AtgjU@1WiN&bh`Z>djL8B_7^^!!?< zYpE3(ZX%XwU-TeJ>C=bstY#BRD-0zx8qJ?eD@@R?5b+^-(Y#XJk&rMnmtO274OvemQT*E?DNHqjlf)oD3CJ~!l` zjp^cJ+1kk1URL$j!3|r#9<$J#A}KsXwCDYDCGYN4AlbLP{0Oonf) zAOw~jS`@^{ynn@(&$=5J*Hq3P242%QlPD8AB<_BGP8OxN68LG{G5adlz7d26f!=N= zz49%D9vxl>P{Y&y9UfO*&aNuRX*Ls=NgRpAw!|ErK3!;yb-;~1GI>vb^UYqc5Tj@3 zViYBxwV|=lwoQV9pnF+czE4~W)ti$-r!d^&aBb>J^Pi%o^i4ot%ws$ zo4aC6V&YJ{Bsv^Fo&Fl4bGK~W2ikh;=SD(on%94-nPoMQu`VB61&2Z7rWNeMgY2=D z-O=>_;sm6g8SXifc7pZqD?fa$BH9c+R!k&^DboqmPb z?XXVow(J_?^Pb#ztH-cK+IOEVVGHyRpZkAlf115(P0*&+{pz<;R;W_4?E*@1rKhP7 z=+D>eQ_NiOh*a?u!Jg1(ZK4&vlJ^~~Cvn0%MOwPAeR^sx6E%UVQjM1;>2MbRYU2}@-QP#Z3OqF3I&7z*r?_+?b5f9Q_Rojc28z2AOqZ^O(= zaR=F2bVnS$uWfV69%?iRR=-rESv5=^CPq_B)+~V)jhBDAtOh5Va1k9amE=5fwv(a^ zQ{RK&K+71*kb;CrhLQ7WM`}|OKK_`P`Po>QZ$(2KQ?b^A4;g_9@*Ru*XplkUiD&y_ zUybW(1V3IuqNE`26v;26y;3x*?=>-0t`0RiAa<)n#`6H1H>FtFL9yl#zq$=G46K9z zJ8g1{DRE6*Sxf471{4MzH&BhhW>6?KVfVzBESUQ!y|ru^zO{wXKL9HY=Fg3eVRi)1 z&e~-g|3gEMTkI-YeSq&-eYaVS`D()@tJUP!@p170w*KHco&&^d`uhAiyT8vmhMt`= zXy$HvrWNS|gc>CTrwj($8xdP|pLeCm&8=M}A}itDoJCYS$BMjYUcB$t4U#e1D-NKy zxKm_lAUTNq<+RO9>m9)_mys9yLzW-Vl%!nrVaP}V8?L0R0)A%-K{Y1Qj@f-*T-oBa zwq6QI3b#t24^0JJ=iv zCPFL7e!~K2AhAP}tJ(B}MlUEz1{U+!hB)Mk!y#$L;Iv87ONEo5uq-MYj8r~q&Al#U zS_Ap}PIj*8vQKVuOXwLK6f`0SGmbP=#h9M-Y2lj*{I>nYMGNdfqLq|5pqyM1L#DJ+ znoiy~**=VktY{l>u9QHQu^B2FQS;!6diXBhhE9ViFif+phUoKEZz%1kZNV^K!F(eL zLQwk1k0+>p&sV%5-Ch&N9AwvYtd^2@VwzilD@qfrk%l6`HB!xD^aHUX2gF_Pfx13+ zNq+v~`KwYq8ZzDl5l84kXn708*3d>PZg#z~dUkRB#An~;gjF}P2 zhGh(qqu6X(bo}McW^VHUnO{0d<)+t$ZDCu(w(9pv0MaDXZ5$8JQMO7<+4t6%=&+)f z-^42tD1Ct+H8@V?RX$SFrpf2>n)Lr#*X$0=I5GCS;f{hPfrf{5#d2j($5|6`^4Z}<0K*sKac?cQE=QwpE) zN;s7>;>j)zYpl~Z$Y|w4yZuEsOLZ!0O!C*^9}z=am?zYrbdqB?LM6x>x#BX>%-%0Z zWwY&8I@pYV?hDo-l4uoF1mJ}7gQ_?vrBpS4*g&A1S1ms|hVjSaZkCk{!%Q(U0e|;v zlvs09qgFjK_vXzD&$Y4h<>WA@tZe%3+DcQq%VrksMCO@U3My_`+pp06T{cay0; zrY_vbZRk%CuhypHbTj`o)BfME{{MT7NI#Gg0DlH9{U~V&y=Np9b+6wZc)X8{+(q4X z1)|La{^>vDNSWi@Jz2CLmUMYe7q1Pl|14o7V&&0zA;eRd#D#h&**4W+tbUw1^bjgj zF@X<$9c$#|c(-2bj97gu1g&36YWcJ!gudaC>migpsNYkFvKo!X z4Ck6!s-wha}9QpuY$#Y_f^ao6soXwKsL9w!1$Bzi*miBhWlWS<4F5J}x~p`r{Vh>Gx@QQe5Xb zW>O=0LW-2x-iGw8kl^o*xPezzM_lG@AKXgTl|n+kOL3-M2b6P zkt2v*C}uz>mYxU=rO}mgt!{Jei zja#(C9`CJVF|&ft?^D9!Qi8J~;Y6V0c|;nS^2=`H0|f(q`xc&U%2Gm*jUI`F6vI`G zdaNQ!CZUsH5xyKgGbNa9Ikl6mOG8@lAt9d)|D^XG>F%6Ti>4^@w`ZePDoMc=*}4I< z?e)WL~dqjTfgf*RnEiansVF77`-e4SZ)4zqzrPA9=EpKY>X+L97E6;`t5 zA@nx(CA<1G0?pQoPwqTHY7Jyi)!5g4W|DX7i$Q@TQanBU74;wnAM!zd9KvXYd5gGv zva(@VUGX@`TW~!!+YF-vl@KM%hIdHh?}~1B=*2`t2h7_N^pGB+UH~JqFc3$_Nsl?W znwfonAKDz$F1Y#tjh-WXk={#F2^>3|*9^)~lG?v5&T|xu=dw|{$KS%~3vukZ%M>hb zRIo1SRe7%Fe7im<^ge9KWuYZbT7PVu!An-fCb{tWPFe1etUGk4xbC9mcXV{NTGvs6 z^0vtku?@(8?_84i1;kZxa9~nHNi=))JsW-KqlrI^;qIGWBl16h@~^OD9A#!fO&V5h z5N~5zjv8oYztb#Xq)UReM%i6gWId--cNF_R);lej1~ z_9la?;R_`94&&r8B_sV>^ul0AgG*cVrb>qOAy>`tjXryQ&@LWF@}|a-c@^mSM_VhE z_ob8SIXbswH)XI62?_al|6s}L=FL`DeB;t4`Jan*=tS8Qkx91AMYi}Ofpv31AqxGg z0C^MbYSgFG6$MHaoTxn;tAZ1(uIycgH|xpTDZxF*wS5#iXMDA$}38$LBe!B8$b^}=A_=-%<22nUaMhIG1O`U5s>Ox!<9F@FZ z6e5X*c_!zGO6j#+3cdExiGum>ecpQ5Md0Of(a@$_X`~|wV<*Jba0vfM77JU}Gpw*+ z{6%>2=poEaZF`Wl*gq3xpQcKQMxFNilQ|kvH19gSoZ!=#{wh0T2#SijT@a!WB!v zu-k7eNP{+BtzZ2yDeiK{+}ly4lpnH}@(Plz)UZuK*|vjyaSEizP((Qi+08i5auPOnuOPQ{mX$!Ze73{m59jzV#k4De+Df zJLTgqZEU#qXQj*xknV~s#z&V19N@$Xmc7UK>>J{$$9vI>guA&a-}a^gXOEPBKB+4? zJsO>t*Hz|l-Unjo=iPQpLh{+Q=pVQLZXQDN_AC+(xC*sPqq zT@cf}_GBaSv2@$`o^h~GHR3-29-_EEH25<}tbAWBE6CV5mc(titDtcj&tc?(d_?udUtTeT); zT0qoT*@@wY9(JScil2(eCcPS4lm)Yv{k->#LdVIM!0 zx&q_sfg7O0auq7vwvmqqLtAe5ykYKgV{?TUx2g%-5)oOs5lJqa{98`G^zADhRRuRw zL#B|B%v_5j%a9>(ZK*a{i_t9`_V7F;TrRg6PmH%1*X%B* z8Rx>qzz7`avHzX)e_b~0$na(+02ai&c? zMsE@Yv>jokjlPy+f=ZxGcs;Cq`~FsZD=XjPSK@P^D>pko-mPK!WF2>kTF!!4hDT6P zLwUEJ(SnwKGaobd=Bus?v%c7o?939AM};~9|ef$MkgCXu*D*0)Z25UVUFL%OXJClV<^<220}*8R&=s$Eol z+&ZRNt}KlF_Pp=Bn!h>nGAKsT6geXX*Q13w4t(3 zt`~?*==I9Rs2+pT=(9OUXrH0oiMZT1Tz<^psYQSPc4=q{-F!z%K$M2)ve0ukw0 zbVYJmn3K01n2X`i8)H3i(M67R*XJ-#pxASLt#@FohTB{zNh_9 z%(@b%J8W~+yYba0{X7Tqo6f(5hWK4G8D?w_U3d8{JNjZnU|)(8ZL&rF_`4`_(n5a5 z3Bex%+E0*1eb?=Z-W)ezv+(FA)L-Of5gT)&*~)95+msX-Z|mAh3|)X{iG)*_mAMQ` zmITpuY7w0sH&gqCFG988Ws*?Cl>1b>lZH9}HvVXp)mOheM52 z$eDUZx#Y}U&#E5u48d<`)suWOULTJ7hIYtvRNnzs9W)}Svjkd0-{~URd3s{Z<-}8- z^_|aDuIx4Fe5yWW%GigcBW5X=AFDD+&HIYeeItebisJag9 zvQrJbs48cRukM2#{Li(3b|b-q927U07^p9&lHya=>8_kSM_(AExP(im)$XBT?NARz}+;ppwU z0p7tvi>oTFvocFM8#C8BMK)a-{R*0s(|6UX@JP0Ah91@iWj4~|Ypk0-7Vri4fVCwMgGzum8vM<5G+a8_ zRSU&34?OY0AMeG8uLTN98I4X{w7Oe2s?Q`*Rtp{GA6A=gvb9+TXbFg7T$F~izAfp$ zdsgOU>(oQlPr1)GvGWXbbStJktGul-?j*tizqF+2tMGYIQ}qxFgmXxNPE~L@TZ)lC zY}{=Vd=Sv_fS0tAq|(M>yAd_ZGrh;)$wYDzuc5u?eagqYcH27qB0@J!CW6XG`EaFy z5{*YQ`92?sR>zij$){}DX}Sv)hIA<<_R=OqgNsbiWrM@TYot6$QA1xHsbsv<5P1Al z^in-LD>2k769bNVXEl@Q0Sgv39}^FMo2=#wRE&K|4*J+;9DQw%@Kp(og?105+PM+O zx}lq{n9%Ul@VoZz*KsK%GykikRPx}6vv{o!wIUBuv>R_l?D@>4nzvZsO6nbVkRkuf zy9mh>b)dMvWFBwhXb)ooOv&jIVD?ihzV5Xge%mE<;Aw`9GBA^7&Pc@Gm^&DMD*5@4 zce5;?a1(11?~7+uphCkYnbkVXMmz27lgK?$7ArQTko-o>i=W#zbVXV@qpj(o`YkW)pZSzla3kc3W)W!^+yn0dUM!>Fr9DP=(H zNX_qJBv!CLeE;{X+}%iCmVx(|>}j$a>0|hS#dh+V0% zk?|4GL#36s=va!`oe`n`04(AD%vYAy)}#k|34qx{4;PsOeZO$h3?9SfS--jI4 zW`cAdWVv?3T@?ljvxaM^E%THW?M3)G3E4bHv$v&@4Q>S&R?eL?M1$;jiJN}?1FUIv z+a3ykA1*>wrq}|C{DfS=-h@na)mKlv(5`QBoV@lFIBmSBj5pcblyK<$Z|MAQ&V-xw zK&6+fLw5xYt=rRL6n@2M|0i*ees z&hz}4%7j8kx8&D_RIj__UUI2MlP6E)A1gLH%=}t(D}e{-`kk-58OVXt=ncG^;(v&! z|H*F`(&(7~sg?*)&kYpxZe7f=*p;P@9|*RG7fPzBMm)r%8TQPCc02;^B#IuM?#hC) za%EYCM~FN{06D1IT~`;3QTUb@dM6D=d(*JfzHhP|o#0d(?b7dbx$%O3GPQG7S;ZnG zp%2Rg$4Ql&M3m9F;-Bd<((>8kZ0%DV22pYl(Gj7S{5LhV+GOlKBDPj`zyEqKOe80@ z*ot)JISFn<(RL+R+oz1v&+6NDYhkZf6Uqf-=>p7$deYWc12Zc6ioa0J`7Q@%P1Rb8 zpyNhuvSL|(LZ%ot&tFBi>)wC%P`GD2<^mx7z@$Rk?Asscq|BzwFP`)_0jVKXG4!`~ zDp+77o)Bgcuj!wO0U7{K87I>*y`C3Zx5@?)6U3K?sYZGmgCklMX zG3V6I@P?V@%|K72fzZbJyqh#Aw>5`Ze3b0ipx{3nv=iPGKz@ajOO%OMJF}JKceCb zcm2pTJvaVcR-*WTHTvv^2bvfwy0pIKA!%nJi>xiB{|O^mhItNvs@lGV($=iO?!r1k zr(hx`Uqj_CoeexZcXumCY?(_$@pL2K-jf0vE;~E-G)Bmp;=q9qeCqL2@gA z*ajV6*k74g92*@m$W88`)wBLg+}PvruVe=UV?d*=(hWsUZB>ugsa&(0SbK+>&f|v> zk#D{kDwMs!u!qt2`_`O!B8j~5+_ngk#`*d}Ygn7>_hx{dtT6v{+3;|pa0Hevj5cOxM9H{yCt1&7A`<|a+x}-#Mew=m4uv&Aub@g zN7H#$Q<}WGsV_rqW8LSr1lsoxAPuT@ob{?2olIBP4QU?T<+>21KnT&y!tFB)AYpQ2 z7(3X9T*oa0P#Ur7nr3C*tc9%m(RWmAPm;>=&ar^RIj_Z1CHcjI^A}6Qw?Yv+^dc$P zn-Ah3bEtdd>2D-@3&QlbxQ&+&m|bv^)1M+WAd7o$;LqB`Ih)?O>ZtNp`%QGwF<@vC z-lhwlrQ!Aoo1F3@H$K?%z!hRsh#y9fCAPL|>@#-GSw&TovSC_?^Hy7BS~)jV-8<1v zk?Jq}3VMpO*-_*4?WVrF*A9CX*HCHKRu3V{(E$Dc z#QNRY5bjD^zbY+>Xc;0W1aH8_2eNvB_aVlW0yUnIxXop;YU3^q-Ggj*Y!8_1d4O$E ze$UzyK7eeNte-^kc{7%G?OiVpgAC>TK3Net{lh{dZncV{yN}@6d4m{tdcpuv^O0g# ziE~_26qz-=tkOA_Jka2*+_mtXwBkvNY^mbvwyYtK;>94hnvj~1G>-iOX%`Ji@~}Ob z8@9g=50sw~XQV4`lOXhM$?Aiv5&&m%l8=_5{mN13rO0B%%)-Now?aadjygpQu!Er97+O3Iz6>Im;31lLAW7C^Y&#jWjcDdpiKm$NZAy^kaw2s9u;(VO z5e)4n>}%{q=VmAGHf|Or^0G5LD9uUU!p7Z*7|C!RE$P@59?Q4 z6fOhO673X4_3(#M3x2Ty4hnDN4^HCoU)@E7!6sE+(=Br$pdnI1rAz9cpiLV3!l-hk zHGOR;!(64_7ww-md?QJauSp-8%XpM)DR&O9Reqn9d$jJWsxt^G@Q6JVy7Or8){yul zcPLTiAL&ZAeYRV;A=67s`@*a^E{~HA0F9Gk^50X1f0{aVDxVi$RWgy)N=!c?=3ks4 z#Swo_3R-rv+t!jf*{--4uwjD8UGsRZ5eRa)ju$eke|3(r*JmDqJY6g+^sNX;QB>z^ z*$zHy0p9O#NU`9N(Dha@?AhwvbPg%K<~LdUQiX`=-)%qDNbM|{D&=u0p}nOROl5Y6 zY|IfT^=0@ePb>Jj`0tGRN=Ksr^55V9{CzntO@>GH`e|m4edM%ysKhJ7?^2uJg=7M^ zY@tUPaVad5V+VhA#4-d`QSq^iJ)_&>wp!oL-*Vc!)~_n;RvcV6{b`QNcm7m(yf6LH zt33gw=i@i;)9AGwx|F1Hp1Fvtk+;N6&B?kT?m(lL(R>cDe2ZcP;ba{DKxf^I!-BLC zS@C3~I7z#(b+^KcbhSZaOU=_|qOQn&K#yB~R{nQ0n=Z`E2sT~Sv& zLEX9P@Ukck-v`*pcS@doT%YDX`CF;)6dtKA%;QQefbnM0LA3I3(5sK2O9I)daA)!^ zBn3M{6a-$8aWg*KX|wv7iIQI-ZZLAfV+l?r9$^e}o(z=gK1_aLe_Ok45?>+EcR zf0fqUTtTlm!C@!XiU7on`ODsO7ceNJkj5p*!5(uB8NJMMTguN`se<3Rtv!bL4V#oG zdgS*E!3ioPXV#%vT=mkyv$}239M5rp_t2BjJf97t4}~RS`58mt#FJ|}L#DglX4U8x z6BC2fL(SIUe7(vjnOiwTW}6trU2JER#3zu;)ola&R1d-6l^`CSA8VuL_@~)!la1~2 zpzZn|?y9{>B9+Q#g3z!eh#eSqG&lT*o)>Gp8c@AYE%`n%^ z<})uRhe4f3Itx+i{P8f4&abuVCSQ^sY~;y2!9z&|X_q_r_ZOXyF+RbNu`}C$0Pabp zarZUx%H->k@x*C{a5sBnleb764a4XO{y;_-$Vro75!kP+`HfPH;yI6;n0DX!D4=f zjD1qcU9lwHBU41;>^b0NU;X}b!gHQNBC{GZ3%hd_gEvOnn!yb&zr@*q(%M(Pj4W`YHT`I)*!)%c*YN$M-!ukNE_V zBtOythw1p6GAMaya<;djf2)+>s+@k1`I55RThi4oc=Ae%rUW9Z2E{O&(o027j1IzxGsD!>(FV5!{th zevj5sa-ySq;V5jn36WHi$bI)zsOXhU!Mtz7bZE7X=JE{Wu8T2s#6vJm79n9>R73ll zDs?dX5%Zzxtt}$cqL(}u#co)Eo9{M9rPA1|sr* z5KPHiQSe#I6(ef-V_c9c^~smTyBLrhTCR(EQr{v7F&EHPjPt9nO~U92EGTo-crWwS zoEG$mRPco^Zy5^EbWBc{>JN34|n?(Cg3DS^N}g}};HNs*c2Ia<{8 z{&+I`VGEz~r2U(VkG^iM7o#-(9Y2kBbiSfl{A$m}7B&Y>`Pyaj45MR-fmL*RgR5cO zYEXD2ihI-v2_r>OZ7gBv`??v49jd7S0!7`kPt^$mlRe8_5d#F?HfBp}8h!*zYZqRn z?pXAqkuh31*H2{ZhM<~nc#g#jdU>v{;ZUr#lQ1@@WwZ}9JcSjQhEBS$GA&hM5L8@o zZd5z^uynqi2S%D;crXB2P@0naORZ2rcsH)|S_dlMvKzg$kn@|URdU#*ub-8HK!q=I z8%DG1HG_*53#y(p-oFmqfq_)h{EQ1{E8(+eCBM`s2kAYIFfE00 z^649lHp1D{7?dZL?Hh@xG)#5nV%trzZwz48w&GDVc>_%f+)s5l!1@>AMl;v9hR2Ju4xLP%#;WD||nVt9Q>pxaemg7LHp{rM9aM z3mJa9E-8tU=c$w@i^Rt*YxJb^umegDS$*`X%VF#uNYSyV*r|~#e{!vQWwqHygZK;& z2|uRG$68yMn6yntR~=4wWRLj zDLB(6l_On+$+T&TpM-@b;OZQ$e(!WEtU#e{oIV$zDWlKF{L4FZzV)I>a^sWhx?hct zGe#-{#l<-Lf@u!v!g;f!E$aO}!pV9~Ep7S~#=D%X$%AhQ%1pJYk!ZTc$?$n6!eIU0 z1W~>>n&%qX#(IoP66j2zMS+<7T0)vq+QyV(QKeo){gGgzAPsSj(gr!@9`kdRa=0n9 zJ+}P&9*nW#&`UGeI9rBnlTo=IIEnFijzu7bWPDm(9V>@2J(i-$b6pIZW}|JLhdukP zIuXezK%}TROi4`lRwQ?BZS~#?e+^rd&h^5_%afRA12ms6aXy)=-qbalU_4QV1b5*y z%cpB`cU~X^B!NEAI9&8*50=kNOrtixVelP4Lz+UI6oJ^HivTEC#Wo@}9$D?#LdAVS zdH*~V>#2qX7*9CN%fR^=d$xSUW{T2v@=e;nCjZHL2{d(ywguKXi^qUqKi-c=gCq#G zW@zDQi=7YYNj()9t8tx}HLSp1>Y<&BUa9Tt6KR%h4_EfHSP`udj5kZ&`!XwqUQ ztGZS)t93B=QZRKwa+!yxxd{-9RG)nZ&8%qxJa7{NuYl*Bo&>chZ7lBrl7(%)N7hWt z1j2vu%9O9@uQhrM{ak^f&kdG=S$-m{Rd92)T#<<(LI9&r>b78Ve>N3LO{v|OMo5fF zo)+jsEtp`O5yI)2jR2_LU~#jx@|N)DF8q@+O2=ON~Xh{F~; z-FUbmxtWK~1Ds??j+VxpWoA$wG8ro<^}R`~&*{gLn2xD&c5m3~?5)Jv`A(;>I(%1f z?p!zGD*nNJ_M<)JPZfp)_u}3ULj5yALV>s2W2F8?Hv`rr`dDy|picl6zrXMq(Y(1A z=T{N5BZ_~3n~UE|E1dlcIbZYYsMVRxw~IX5f$?dXkJ>hqTJufYJv~J}7eRL?DyF?e zx5Z>MUsfOS3(^u9T0>t_-LhYtsN39_Iv`w4o`mEyR4e2DTX#lmpgM!Rlcj?TwJX2LIr%U5<|DOR5NbuJOs?i$^x zSp(oMHl6Qw6C74ga>$+MR33Mic3mVE0!qZkLHZS;v<*+*W0TbM4gAu)1(;a3O_wOT zpe1q^yWlYTH;}VS`a{yNw6}VwAryB`3@_hDyE#hwc?HKAvsfy7oZM6|MK~us{wrOk zgZB>ouYBmg$9NljsD_W!Jmw)*M{1B^|MLL*X$O5`{AMt~j>)9O=>qz!q5QQv?zQ?S@X zQddc_wYX#M9o2jzgK0OZS=9vVXn!d9?(9?d(kzrmXGTzcSa`_Z+V(vLW0ACgz@pJm zlwHq7>V<0<<39kr9|d$E5;yJf@nwkgMO~Re=Si`(u8E1Za;<&;6}l@tEwlz!Vyxc9 z@U2a@UGZ=f=zC#xHLN3|?MlI0P;n@2OCE4>RXO%X_W7=twoO}>7=F<5r#Qy{*t6M_ zNnZJm!_Ce@5XAYoBKyI!1FiJs=Rd&l_+2V}^W0s(+;5SedSI)?UA{mUp=`Q;05v#L zyFF(2sQxY$@Z51e&>cDh8>gAG6y#H>=TfC%=HGSlX9jQt>#lwFFzJBKFE?1(+URVr zNF5q<=M#6DBsMg?%r~|mRkkUs{I>!bxb*tjO5^0k`(*;F7J*26vU-m|xQp}_7`2h#8%1L=t zsD+^#je?N235~BV-@r+L_#6c{Dt6A*yE5!F?hGz>unO6nAE>~UzpFuVrZAa3*?j%4 zFE`(`^p*T#7PFysT#dv5U|mDnJVGFQqfJM3UQLxYnutHbyW1_-ZvO z3_C=;Tx-^+quj$c22BgR0fz!sp)t)~ef73y5M#2yKBH#jteIkyV36^(e!zTdJS@A@}p+bFZz~g&7xo{4RLt=fBD71Z^OumNPAar+> zw7C?5`=K3Hf~TW(VRalZ8phR1+6t=3iU2+UlM;YKvQFp}YQq zFQvTF=ca_}`%O_eID)1R{=d&#gJ1cezm;UxtkS9C(Q9X3kUVkWIGI97fzfDYvyM2Mk|c_Q1Uq|LKRuxR5nsqTS$W}PSyNV6Cr6GD`FQrryVFR(?&cU|P+8-j7x-M&}xb^TKF7Z^Ah>+G*c$tRXR3QfNZ`r^6AU?Cw&`AMk)859Kb_3ZBq zhKcNqUmH$cmumV}xFJv3awK$(WeMohI4Q;GE1Ug$)h#{?>+8)yB#yAwhBKrUN&_Rne4HINarSi@Yhqp(56W@6 zWUi?|)D%&V%0v=BON}Q$G&Q;$KtU^?&4cEhX5169!uBZyKTc-=(T7@FG*#c8_b7!W z*VMV_Y9q_1j{WX!nWP&}K~6p&RNT!aH5=^e>vP<(wK9V#7-Ve`RxC_Em&ZQdvdLMpj>>A}<`4@WiNy$MmX| z_K-(gt^PHgsM?nDKE)R%BARhNM!4&CF+{4x3mbrA8g=!Rd~9fo$TB5kpc*l4EpvMcs$M0wOdu(+ zxES%JiWB5;wvQ%lR?V%}-5Rt{V{^g`6j9_1V$#UPh3pJOjl^lEX z$%>go4Dd*}CIT zg>AF$bbV4KP$z~s^60T0QO}wA&tdhWo^h4%LECnih_MYg56De&h01~Nul$+ z_|Azr`k3Zj(e5^N145*W0zm#1Elx#z1GF$ZJE{=7LhR@ThJ(2u3c9>xOdLutwF>XI zw2|N8=~kGIkWG<}_>wC{BM|!!bJcI~_|)3*z@4y6rc4x$J*d*546|+}Tz6HyzFNGMi}jlZ48!_w+O(=w$l4-@3K@LO zBevwXi2$-2kB4vPP1u)GJS_1P#~j915Px+q?i){0@uz)wl4RF?wZ@Esd5qa3o-{4= zgn{JTKT}(w9jnXxd*kq5xoFJeyG8>7tX$k*Rbr=5tTe9s)4?da$H>KXCE|Q(vNUBe zjn@bCG4(&4aoUYISt$fXof1e_D`rd}5b$K6Axe!^koCV&YAD?wYM?L2-Sg$DLiy;a zC@9U+C|Rq)wFlht#Pld zkNcW;HF!BV4+@N#zqxBcuyPy*lO z*ud-YwNy$WzOG2mGl01gInie~jt3+aV18z|>8axkK1_o0G5t%&nG{hz7K%o;c@W;$ z9}ikxybUZ#Ns_TmoZ+J(EFUEzVX$3+1Xz1^nz~yAJh0AfOe-X-B#n%Kk14mfkzsM% zQ>a|YWJFcdAtdsKwZbKZ$8-4Bh{c)?DtY9`C3gKedzkjvDQ=)B`E{pMGw8qV-b**w zoIIIQZ9XPNd01SkI|Z>leWOb5tHL>Ua%eKLaj_GAOsfjmk-UL@qUP7@r4GpuXa3y# z=ZWWe4E%g)qFAw%Nsqa<%;-PdVvX5PrA0O?6>2oHTn<+R;QeuC82a3lZQ2`rqUZ3n zX*iNXW0E;yNn>E~$f423psNdlDS_3f0a}0_)BvqO4{88=PzEFKq>g?`A%h|DGDbe! ziQ~9CTIMiVYi(|8$^QV5YqC8rq@P#%o>j~i9Nf6=D@ypgQbQ@xr78=Ne%_VD-Y|74 zJX}2stW>YDu-ry$2FM6n6c}vb?d3kc5Ob|`wl#O3@prq-^|M@%%^c46t%)7 zx|<()>}y3~{Bmw{{^84#OmT>(8t5XB1=O$ft9;*ywzZ9QrOCDLJOX0L9wro@S>%qy zxQQ*ImO7AodRnf|U*ck~)E_&-*gj--_gQ*?E$Be4HMZDUr&%t4wR}o{_vaTZli_*33zEp6LZ-Z(gpQoss5k*VUTaR>oqW1waab8h{l5Jpd{IQ~~Dy0N+do&HI0jiCNG- zM2jh1))9mb?d|tmDxC*f>bxnv`3i6%-SjU;fWQ8d(8+f!1U$!S5p z$>4M4nrLEixGJZd7ZNhMFXK`#v^Hv zDC%v}-j&Pt^0CPsLgLE8m12Qdhml&|KXZC)E^KxF70i{ESc>1I7QbRgG%djWaFaeS6MiII=997I`LCnXwBF=1`0ol5Q2{LnbL!6Rh93S zf11?2exW3=Wc?(FepnmWQrprn=f7UJxU8LL^%>tk!l84Sf}&h>R&0_;Hz50)uTpzj zo}H141*_;*#lTC+LK}&;OzM}OFO~1;0rah&{;%>Usn!?ToZC)fcs8>8iiT6urS-Lm z_|b2(NFP>hv3MlG!jR7LK68MrAll^=9d;D?LFujQh3%d=Emi>Xnh&Xi#T=39OUD`5 zrsq>@R&C1@CXp(}A^kgd({sP9;PkFkhF)}^bAY+za@yb;*OpsQ$pW?ys;7$6mAWz_6BaG-lodjK*(n0V^r|tkdww#$R%HDnGSfa$KEHP32JtWpD?n7J8%#Wu*0 zdsvdH2V;KX)x9dJv&fqwGpk6kM7EHq->LFA8s6kvr|_y`EHPebua45l>Mlf#p1>4q z^9?}hSZwtg3Hpfep=-YT0eKvzuww{l=rU zZI|$Hc&(CA^D-rdX&2~U8A5Jyed-wA%(wQ~Yx!2+C80uIQkX@YuH=(r?IAv0e7Eotv1og~i1`kzQmVgk}`M$jO}+Lo0+-u|T994aw8^YeK8x z2{L{cGC?QptW4pIZ;qi>=GR|oHn8=qw`#LPOfp=vi;E^l85C=mnESGTi~WRAw@df$ zQ%9BA@C>fx^RPT^vRT_?s18iz+H3S;qd~83zO~a`a>{07Zx9Pin!Ynv5}%Ny;V+J_zKBAhs;9joYJt za9!tH5vGH!OVsUV#@I|ax$ThZ-?PWd5D*zuEEjIAF=7}kyMfk~>Y-+ABukqFn8a+! zLxU(0!1G4S5C}DEIb{oeg65}NR(wT<=fTkAqQQw@B_PJhc*w+wAs2Xvwbg}+hQCir zDw~#@V>plKcSR{#XTx?YA_#`YXB%5h2~63UPRO5#u_IMt);JaEoD`))7Pa_y)9{I84F8+ zih@X@nq(&BG6)f-{=U?;nUCY8RjS+e69|2 zV=3hlm=`6%%MUjO2M)64WddGE7;fcc~!>0Pj(i(4bXksO$FeA~k*3Oem=7}DzlToSGVEHb;v`@?F(ZAIJWz5ZI4aX@*& zoi-K@T*OK`o#8@|H9b^%Ub0tAPNeWO4H1S`5=y&vqk!jL;Qs)PHkxuiq!KJpZ7nB| zxg%tE0E4B7I_N2@HWI0*r}?p0{6XDHg`l>8vIFwd=5NGDQP1`GNBt-Z#N)q1E+fNwkg=#8^Mdp zhZ_eap~lOPH^pl(zlfFqhE9jQjrtn*;l51SFCU*e43sLfw17R`in6%Za-Ns?8pmd( z9)p$>i<_4=N7b~4ASvAKDBQy4-r_zz>nqVO0VSs&EJ-6}#XBxyNd8P=E!BwYq6)x~75ycs%^akYh2Ga?Ax9 zELi^l?mFGw!2lLZU6AU_Ls=SUp>e!#BlU2M$Yf>;3riVQ1#Rtkx@}+dn-Fxaopx~K z)hwde@zKFFNa>J#p5oIgkgIKV1+RL4A-6;ck-}rFO_cGZd1_zzEw6>4+Ig@rq;5SY?m9>H>{eS+QX+Tyakotz3>KnE9} zktv-c#Pf*&jLN3RY5g`A)48p>B#PA8E><&)X_=&%p^nVzmM3^#sEZmrZC<*;cLlLxk{BKceicd{{xD4NDeYX}YQ)4zHGZQVHM2zHs z$!q+;kY2RgW|9giY=b|S`-?Lg9Bk~#=17r>k0P{+))obO{A&ldw=V_Oi98lR+mnTX z&dtm6awI7pEU60^gtN;d*f)%H_9)i6b!;UC=`^Ms75%i9 z6ktq@tI?#rV_mM-_B47`Yo1x{e`#|ZS1H56FBy#3c;OX>F#~Gv7j2BBsk3$IuWIyD z!Np|^xwSGyY5<}8gYOPIh>8{;_Y%s?20E*WTW?*eK-T`Xmd(|tCc5<6{{Y1nJRd0^ zEyUvTQK3lkQ*c9}QVCWE@L^Y5CZ!Q-y0~HCO;I9Zh>Y&RBSCg{HUNB05(k)nbu+R! zzD_C1N-;CiKMq_rDqbLWN4Ru0JAgfF&HGxW-Mk);)!4fA@_AI5*%N2WlaNcxA-s%1 zI-8anbT>8U-0P{E`-3NQGO4nzhvI0W6`4u)-wyn@KW2=}jf94I#jX$OMf}*;RSY6o z>T~nhQV8U+dAw@U8IHtFsuhZn(VE@5)Y_Jkt#2rNjES(|5@X}}qnIIsCC1w+zTxiH z_wP`s?aP5$N^Fi+e1}1iha0(Viz7f2F5!UI-L3Gg z7podQYx_CCGa0_%kg0+(CMFWt?%r+XlKm}jZ{vFC(@!Tp`}jRP*HO$dphaige{S&K zaqzjEFEId{13EDr!~i5+y2m0nQ1LgpJt}Qf%BzFoue(0hX$LM2E=2a29p> zW`)M+reA}mzXNgFy#17hck8^Pj5a+FO69g0vFRV#Z@Jrp`|}P7r1A0m$odSReqHab zJD>Vw(*FP&>iXA)bNz}+KA#|hK^7xIE7LdyY5-IKtw0Sx3V;;=Dgb%_$o~Lxv9f03 z`12F&jy%8KBdHG=RRi%l8shu^0K@l3cl>&tk?eUX%*BhB#^L-k9I2*dixwo@7!kX0 zYpU)#`%b!7miUv_P@Ef=mPvUBk2{h@!@-oUE;6E<#1#x~5boS#y{bFrQ@lP{CI$dV|MML-EgD4In58uYty2S3@oVRB=WnvvpMNeWGjRg}V__h~=d zW&r%gtEt8EID(HilgelEJY}=v1~{datcopbu(sQ;VOLs9_A--?E({R5ZY~TvdR8gM8Ro*2#M#KOmiIJ zVOC4HKO3m^KgP9e)ma5fyp}`d{25#9_>Ft9@IWmJB2deL&o9L9Q>cb=biU^5DIs|>Lr;_=Mr~AfU}--!lwJ(ng~!JmS<98PNHtJdY}Y>?m3FOb zm6B5;&WD!BaRxia{$?e%%efq;gHvk~56fz;ZmTRAO&1%;Odr7!VH;XNKS>%}TIhGG zCJPnD$itJ#C6U!Y4SR+JYj1~Uy=LsJFsuU{@yiQMJv;$%q+&1Z&jDMDZRTenKrU7cST z6q3m#!f1?{FFer;O)FRyJr}6diXG+5430d^Sz^eE2cI!WR%QSzf77S5FQ8*!Tzv}H*9E2`*1xU&n7sb=~U5>QQqT?}kzj zrH&GG85@=E*RwEVsU54gOIK2vn@|Qk`964Yw#zO)*&Xy%(@l|!ZMXQ=j=gfp@&u7& z$(S}ZvLz?VNYz0907&UuVmJ|LEYacO__4AiB0{0Xu2`wik`92H!KU8@pnSaPAz=}b zMVxz2$TZXo3-s2Kq=N*+d}y;O#C^W8zKOz%1|4H z1QX~7)Enp!Bd)bbt&0sXOx|-(MYF^T$s3y*SHD)+aLl!%_l?;X7XkmM% zy8K9}RBg|IZ56qZ$03!Bp;L0J%PrlBAS&DofGzUZMQkQQl0h>Wff2SeV3$x4hq}rF zoA>nArt&j`osk=b+R-vG_ma$#H&eKt`qKDQ&m@92T&8A$!iZ28Xu%7#olmLKw_4XB zFwSGhY?2;(xND;>-)JOzZZxo=);I~1rp(BRQ9>eBp0CZ8R#^Reae0S4^Q_xi9+rnUubGdFWGXh_xXH2mEPYkND zx|Y*MJC98Y_Nb{N!pIKBYYVX+hplUR zejbcGg!5t{GUK*$M=WP>fl}D<7O?{2_Wu9{sMBZ5K)|@nER~i?mUS7qM6ZDX+EMO| z?8{<{{#CW_SIH1{E=)K=Y-5Jg>9~YTmlnZk_wCh&wBCa?m z#_$Zt+F1NgKe}Xb>^*&Z9@UMc6CPet92A;3EooJeSC^4(HsUk}Ox%ZSbud zWtDiwQJ*Ho54bQA8;bxt9-qdvx=x}?A%a(v8KQ`nV7EdA%Uk2?Sj0Syn$WUf@z`;= zA6m!^kc~E6ZaV54^RFt+TFy8o%=43OtO!y8P(C&EG3aI!hIUQ7HNXU&2^RIWXS0DF zqR6u1 z)ZUd_TzM|9$-3it&8+5VcVnZf$magn>3z$60_MJ5E{<4#t^%_P^;@B=f#C3!wAPG zS&ON%Sm;Rq01D}{o=c-^fX-rhgkB~E%iNi^6$jMb^)*Fov+`%MqL`b~xyoc5PZW6sMT(A?@v%FjX;?ETQVqi%o|Trx zF(avMA(}jhb}yGEVZZ7;n*#0ayZmbgr`XXVK0of};`yl$&^sbWvzm}Vjg<=?u3_;5YCz$G_DP>sGqcdB* zCL_px;rpI$Qzs>YJO^o$2*bP0G--DI-S;Y2w$ZJ5A8TjHYZnHpa!N%| zj!2*mNT5fJfBH*(n4F*6_#bjW6?3?`1|;ls-;a=gY%_nNUYGu==lcs1Z=%_Q=iCU$ zAa!p3p!`L7dk;dPnLbE%$rB$eWJwX}XF?fB{1{W!Y=zbjvbYXrE^mS3d6;#Nk;aQB z{{V^9Zy%H1y{b7!lGHd3su1*mY5-KgQ~=Zf^Z zUcGD1{{WKNRjwx|rT+jIOFfd8;~6lRziQ#d$Z>Cw-gr>Sm`b2k@ite^6_~ zdt5WyTGW<*aGa%v^&aDvUz7G%x%qV&j7_~ zQ)?o~!okh9?mM5|`hmZtRcg;R+Z(i)?qX-d&soIJ43fldF#sB|Di%V-ZTMJMUb@OK zza@SrAh{Tfp&i%&lFZlnLA{%|@T;{Uks$dQF}^t&K2Rf&_!b-7t+m{A>1x)s&H``+ zk17c~@s@XHUn05JXz0Pe#ar^`Doc1><5+*=^v&|cP-c6>?jC zA4*orfO_GkY&d=je9UR3n|!$9RWnFQC!pKz{YnVwP_N+KRlJ2~OBN@HtgWdep0=({(cKtqMmiPU8!?2r`GamKB(czI{vGPJcu2$( zkdhg2#GwREC14Z_Ery#4-}IW>>rZGATw5Y|{H`0v6@w5r01wBl>#`CF6Xh9lnS+@T zh;Q81=dGL8j<^XdPbj3Scu^VIcC>fig?eol(y{o5CFVv}en%VQ#^b@=?=A}lBwVrE zdtbeCq?NMDd=>bTWOEr04oN66(a{Y=FNj zEyIqx!MGPu`b~4+YkU-{2hL*RnOi9l;Fe!$ODI_*UvH6AYA@+ks@R4WEES|_Va4(V zP(w;2vYk)>@_=p9z}GeNmLzdM7;vVMa`Iv`GJe!{GA*<>TkCDKEUW`Z7?N?=!RN)i zv%2g%llFio^xoxKmF3__jya>wN1kc?ej9@zBYXTxf1M_ve4JqnPdv_MEE_~;8t)nc zZECq_L#8XDy2e{2WnXb1Hp3ad(4DXFr)`P*1Qg+3Pa$X;J9}P9TEvia1whdEu7wE^ zlfNpUFtW!QIIx`oCC^}6zu{5RT$GDkb)Oz7F-v%jyo~ArVn_ffzLp*9n)Xe}NQs&# z;6W%!7?4mzY(oL44QsWBTAp48g1D>(86ztq0;ub`9$PGE*EeFM-s}2%)*E*yg6e_u zb9q^!k{o^0i?bPSN}^uY290{^+_WaxxcG9RjZ-gq^4KXtcc>oiplUS-_*HDGZvdMt za>P6+N&GM77yFA@%ZO9NfJ37n`u+FLW^sLUvTT% zwAsB{5+|$;E+kSU?wNikU>HUh-1~JN`=4n1DOYn?fORT{UIHUyNF$Rcr*|}T@sS47}89{j_AGZ>MMX$F0qWx>7aRNGM=ZZj+J1ZdDvc~rAJ{2t>kcr6x zCiAPP*2Q&FKT8vP-qj6AOp(m-*t&oOFgDTdjC)13(W{=7NkS$Bic{cW~IYKMU(#MXIB7*(qdugq#pmqG};Yt zZ?q(q1qY&$tu<6IdCRPl0ERgUP=jvZW9mtB{uNOu3qBVQA1^-|DWqh@2t=h8?I8nj zL3@1P%Cg;lv~Z=37xQtyY{@UvuN?60k&9)LOqWnMEy>%oFG1S4md&%s+eKeB!{g(; zlB>rW%E2-5A{(Fx7gsX^cR9AT)30rkhNs+?35hK4JUGxKQl>m*QKZ@wZUu-JHfA59 zs@Yk5f+Cwgk;eiY%z1aP@)GJ}X)eIUy5jp5+FG3}R^>4;dAS%Pa`Hm5KsKfoH*r+j!Ay9VgpU`fDrCKziWlRrB=;p zwCu&fZ^FyT@_A1w$`IqhX35Td5Hk`zg!_HO^wgfUox0OM{zjyETPx^*hZ%-MnGzW% zzOyN9w+f#kAX|&-O+}Sh$UdTVnrY{oWMxj)RS)C>!1unreJXk;m#CXzQ1U!ZK0KgC z*>^rnX(ful5&&?0z_!pmih5PsQxdQ~Lvi`OEU%+}TsrK>#E`URJuE{ikeZ!$gQY4r zU&TJY;mb0(n9~QHIX{oEo9P+ml9h;#yS)t7MeMONM*ONqfHAh z!CSpyZMF3VpbtI7GPSR^;Gybl2d`Tm)v8iQ=v2J#x!CS1z?EmzTzXY1_z^sKMb<0G z6pOKl=s+E=bh)UQB2MvO@?^%*I@yNsjBZHiLAOKxR69X+L5YotAb&8{GD~ebvF)@D z)l$tMjpBWv#55M%NIJJ+Z(mv@LnjZLHt!7n8Q34&CeeTm_5A9cmy}YgG#re%6H2Kg zmzFrKGYzKq(TEqd{x#*Qs&uq`9+Q0egs<8p46iQOta(U`c4_jChtwLr)lEO^Vt$TmTLu(b`O@vcg1cx)>}Er zdepcye94a!0(tSbq=b@E5LX%W!nrLMkxuv0oh|$jbV4m)tyh zG>E5F1%>xq^r_jg%q1oWkCEjgj~Xa3*-4R0NgDjZ>_883)Pd_&uS0obv?HDa?@6#Z z7+WI{OAKWB;SIOQx6p3vKhC-}=~TC4D>+bmNA|n#DEVZ`;=EFB$Cc!X*~4s!{pzxA zK1bzZ&e#o1<`RD0TW*RN(`KIF#5K6tSocZ?!U7<81D_^yOo z&{uw@{GNXFrv*MV`FQyY5q}7H{C-vpi?oiXPg>QS@LR)^9zi%#7BhgNb!%C|_fjlt zmdUJ^vx3u-Tn6K_-!CB~BI0++7DK|Z38T}*&#$)SMgIUEwaV}L$=Ip*M43)=?OZNDAY)=@!sg$%1dnMH zsP{9dDgxI|z3r@{n))idnGBfmyo|79d1OKZn;64f+VSqzy6E4Nj_G&>#*DPGtEt>< zthdtRU&z*mX&*rU0BwHa$>%=Sid@-*{Dvftjga~Y8B_hYkw->l@7}ugT2aTgsXQ8j zD^nwrOb$%~D8BmPV&?wK=XjYHaLU4)VC(OVe29PiBo#MOhMYM*LgH~6Mh&y7gQl9> zrK`i*&t8Q2>Z$+>)2aB;tad(<{>0~fU-qwu7uON;aS!1X%t!KS_H@6*^0u$Zo9fie zQ~;;}PyP>|b2c6CL2NwSTcI3~B%_)@#XbQgdmNwc$D`=aF?hE<% zublhuw#Vp?r2hbpU3Dqtl^=HVe{}@6LW;xzI zMc^dQCAaJC)6)34)H$x9~1F&~fM;loT)@=YsCF4ol%#fUoJX}43-x#C&8 zLOS7Q#FsmcnU=_MT1S-uCuTa3pfBnrzm+Q}kgMR+o>YMMmO7&H$=i3|K60A{}oa3$TIHuUaeiTkt~IT5pPY z5_l3^XoQk1?5ZQafwVe;4T_Ii>Z_D!vST@@<(D=vtj&)YEg0Kf?d{P| zTBgKWNzRE8aplULlv``1({UX`?bhEK!{YM=_AW5FZZ9Swi4!Ik(03uq%{sO`b9myNR39N5t$STtPiuU2tm{b0O^uB3EB^q;!{M4Yv6Cok zGBkZz@4MQ!u>z-O62x^R5a5Z5Al$3D=9P;^&UM{(N)D6zHPHqAzO{zWvo^rh zP9Fw$&B%PFb;p<^?*_`q7S`FW+aA9fZ(@Z2s&|LP!9GCQ8Tx#8Ss944w1Z1M&d@z= z+OxjsU#RMfi6n@u^W~~VDp_OM?;BXzn5hER_*V^5OBrUYt;@yZa^k)oU_^q-Qet9B zHPO@ybkv&Z*J~$~OM+YuQ#vGL8VtSi2wk-HGj;%N_HEZnHfn9p0+L+5Ln)(@DOAQf zKEdydev$3yr>M0;pyUcH*}T@2%b5Wo3d%OE?Q#^3;>F`XG3 zFg28wYiZQ!-F+!v>{7CyAOXplpvZV~Hf~l5Bt|FWa^1$a{3}XZvXl)5;BnDQkqb!a zkdctigb2y*HjbrRt!2H!^c0qPA5D_x52ua^CM6zqyF@_uBAt2A?;1)I|RB5mJs9+C}xn9&Z z9yJh!lwAG>-3M`0unuU`$>)|U0UjO z+&c9g4{=RkVCxD=ED%8`c5R`fP{Ej<=KcFxo5ort8c(2nJn(Q{`H?2jlKZxcUvPEM z5IWkqtF_+@vZp&UDr6>EOXCr~%2(K=*@~^t%xijUjtP)lNbsgEG9;Eb_X0dtJAfCp zy?+X;O5y}sCo6~}5o4mqAUiSVFo7vIvZlW=4Xx}gSl3o%j0cs?%*c`8npc-3Hs+dL zFD3r~TM|cZ)wZ<{3j%1XjWSwDapQ%LkbJw#^TmDR=3J;S6Wd%&JeQr z2%GL4*Kvc6$oTR5UI$VYY_^cixB>#-sU2zj8I}!%{Z!Lp;X?wvxTzGG5yNe$wl-o# zw%c$z0eYI(@_wRnLxq(dWNeecA%+qR7%;JBDovQ~CjEMRYIb4c$kAt*p%eZm6(Yup zR|WA24LN&tmR1Mfac^%yQj=~*>{I0MzQ$~v#9m5PGHjXAapF}rA)foZmh@WN=ARA; zPzNV7lCYSuziT3EA{&=Q*QnFoy0m(0XPyL@Nandg8mr-?_@FE=EQmIT7a#_2ls31h zzM7?rLn=b}{!cBptUpa8Q>YV0?qP(btdRk52E9P*Sz4=?G7}{?BMhXmmMFJ|Q24QQ zUf$ieHXj3B^lC62a1RzXAome+y1D%#-Fp0J?8(U+85O)UC$mEK)D3eBj zRp!?H39~Xy4DX2ZG(h9W?Ntajh%7%{jeru!RiY7iZV$Yx6{ zP)y;0kbx|RVj~Wlt=qMYPsFhUlJ^p2gaIQXM!;-vtjfan-?V&|=xNfeVGcrrWk%(3 zjwf32BWm9nbdk<*W<5AfoUyZVwOl*i}7u<}Y zh+RhF4@)0P(L*t5p~R^ySrMpVG@$#HirlE~DK0`vFW)MBvAJ@hrRgV%7q#~7YH{auK_q}AJ zvPkS}@N?wJ4nB5<85gIJm66Z2Px^j3R?f*bb94sD^Sm*BPFykGknDezP&|GzSDtP zAo>?FUNe~E^5A@kq|C*JL6HnQC zcaW8)4UG4iU_l*K2A1|;P%4)2WP$aTi=fuqb ziX!r7w4p#Fa@yBDJu91HgmlmYB@jip+`H=679gE9^!zK4yqlT6LNBP8Mp!6gt1++u z0(zgqw%5sx&rJIdiJkudx13yK0RwU~38Kp0M3N#-OS#u**q{!bDO$_3bNd|{*Wi>M zgNMpNlam$%M64L;=a1Y1%0mOXQ6`-_T=lMJi8Zd&?bOZka`73=*_k_6AzoHE66D-@ z3HHhvRNRm0>0LFN{)TpoWtH5Y4}}gkE@Y9jV&sQrEfHi*rpOfh$9s1jD_U)B;KusW zNtp?=qFmWg!AQ$(-2g3Sx3&8beNoxOb$q<12WxRPew)u@G3at|R^ZGZxL4&TO#3dg?x0Qxn`&;7c{L((o&Bq;v?sZo#fuV3r`029sM{Et+v z%tb&7fE55L08{|2ObU;?c`U9sf|oBFc#ugPZ6r!wNY+N$WK{vR2E(U%=KEK*b+=wk z{Vss~A2xAHC%2SNPRYLuB2|0OIhulW{TNP0G!M4g!Xr86hEY z;d{3Hc^C#4wxFL{uaR>EboVQ>^SKH&{oU@;oLl8ODjGC?$7Sm18$xh}{joAC;@AUR)k~tO8)>=E*j4;Nr(TS#TIe zMr(LPVTP=q)W@)^wN@mpeBc5|QWzqdc?_#>ZaOyd`fa=V0oV$;d?G9|%M(h^u;W6= zr3g0)S6;oU(!?`ACatojTsWr1Qn-@pODP4Hx!(OXtSpV&7Yol~H$TRtc<$>Nc!~tx z8_1Vr(Z#r%UQ$aC)&Yo8J+*_Qc{knc4gUb# ze1=CFze_xk%7LRU$U-%_KzNfLA-e8Z?gX(G z8%4pjX7!|E)+DJT72j)TNgGTzkst_`({LlRAK_N<(9NW6WZSj|LE5=CZ?kxWU22G9#(K!-A$~rb+jn`#|$~8 z`+2Y-M|1BxwjdE?Dd@@=2Dm--(y;HgvX_FK9C5Q?W8;B`4&1vo%*j{@4x|rxx{bXr zYtgaZ?MRcrQJ0TLkHKuLsD1LxyW>P<7cZa-?d{n2s8zG}L*S|8xf7ii(&Eh7i8wMy z(gqA#{+8QSOX5IR{n>0|Pq4cM&)k!2w0r5B-Y`HEnSVbsD z@eLeqj>gUhVm&KuwzX?0X%)rNEG&G5n4GCRfCL+gm13x%4%Y8lzGJ~G;slati!-P~ z$|QlrR8#R}J>t`KJkZ zG)i0+lS79aKh}YfBd*t(6_Vqo)d$?3gZNf&V}HaNDtWwYJXw*Ym6e}S0U#K_0>(>R z4K%fHqcSIet}6}N7_$Vc5B02Ur2;E^WN~|&j*2TC?=b;YC9ynMN`)rXrX81i$Q zYer&QFfN+D@oNBS>$l_8gXT)C?D)i+-dvVjsg_11UQ=teh_bHR+i0$uRF=ZBq);VFQ%RTBApk3N!C745`96DQ4h%DK&{`~QEH~fTSdtb=MOeNCmvL^ zNv7K!c7QYkcS}|qHMy1ihOARAPBfXaG{7tXL8PguP1SQLOMWcvABPD!>w~ zFY)h1l;MzzIJp@liV>7VPNL5*Q?8qc{{RZ)dUJubi6~@`-E`UtdrRsre;V{tC6lKc zBkPZ29)zjXgXyQu`Bc5D$sy43u|@laL+xU(j`2zZZ5kT^dlT5#J@&bXz|tqh!FflR zym3c3Hrs87ZO+h#-MA5ADlc`z90g)zWvIOIxW$sd!~t*sBWYpRXzI0V>m_$bJffhG@tmYh37Hx*vt+ZWS63YjcRl|A8ke%I zH{c+!!kt+b9H`DIMP$^1jsVc^IvUO&HDi$M-aag-qm~Ivw%-`L0>06GEqmB?uS4qn zyhV^YlKrrsN6Dv@7LGBtU;)3orN0iMyY@8eBiDv&qQ&#tPCi%y%R1~(0JLCTS7pB& z`c@sIlcu$tqQ@!cibrp9TYk-TaQy( zCkH+9XLInP!<4+2SC9~_LmQXrsJ}|tIWcMqS^Tl(6>}oUZFO*U^!zH4!J9U`b{x5X zXXNMEqZkMR7?cI_7QAdpAhTZPx$NTUdYwA!G;F(@A})K6;^%nFasoE`*KCOyTtos1 zHk%@j_P1Kc_&4ZnYxb&dlB!((GWiVH=4g2PATfimE1jUR7C$#Z(xp<)9P(pVKd=<} zm;()=Num;m^0w7rg~+v$o2{#4n|xqaz96H@T$!=ew=+h18-A{~Q|s`qnzUlY!}2+J zIY08a*(N-^O{W?`Wt2(SfWY+pDxCNv`aA4Cb$Q69M0uJnPY=l-)v$ZY6swil@+oWk zFYz9gzcpq&IWpXbA+!AinB3ca zoyxplXz>tb%4NVsXk~$S0-@w)`T8lhOHz9O04E%UZ^ZCga(Iy8a`p5DXVGKCh|@s0`&nc~)k~KE1G=znshK(zmJHTe zkuljBPtz;3u@)>g?jS#nhMM=&t#woV&V7m=Q#_Gl5bYMsgV}7?JR`tG4 zcU26}aJiXy*|93hG36v|%Vr@Xf72tMMekh>vUAKIU2&7oKN*EKOGMdH!i_UyxRxT| z0OmJc8E;)x;O1c@QxVA&z=JYT4i;3#_KFFd+po4ZG@AqDJ~5g|u0j2Q98nM&hD(Z=|K7#)M^lX8X`)wqxdt`EXOrZK8ME?LP^?twcJl+2Q z$n`qtF%Ydj+%RU(!19<)mz~GG@_E52TuF*V8JtAh3YS*-7r%P>{hwKDvxoa1NvrKWlvw@2 zKJVp@3^<&}E8=W%AXCR-PU)2J75!J*6$2`<7P+;rQ?FNqUd_H(Hxd2Jhwjh1Vh6;y zQHi8z9^OZRA+@L0&$Fm=uDfY$)as%Pwe3#OxG`UG6yxz``q22;WrT9HO&~I|x!bnt z3aYTRmtR_X<=Y&XZEZ{NRpoM=OJK%0*bH#9HleKUtOeI`57yOcww#zd-~%TM?mkZy zW67E?5M>Y$s}zN8)l%N_qf3n|sE2LD&3(F(Xh+{UO7?an>fR}&9M{A7} zxD0h-)BY|Kz?yzb54W@P z#yi10OFm9@zM@UwJSiHIqTR3YthUv7G}m^k9;HB*IR-?~pWKN`IN0-TA=1CL>AgGO;kh{Uw*Z6wZN^+A%Rm7CM)&R%Ik`Vq>jkYX;$8fM9 zi(a*>GqM4d=lV2+$U??Qj939;Z>bua8l;qxZL&ES(~QQ87a0UewZt$D3DBKxPN!du zc-N!u<&@bbE?yf2$jd-(R6D6CstLOX1FH^|j>PywscFb(W@hFbXmU0~GVY8mnXlBZ zpap-0a?@I>mW?Jsv9bAM8oOkSSe2SQXr@IiD+6Y>+y0$5RXf&jrGx@AZZ(-=mkFCAA8YJ8fom}8TTZtNf%v|>*Xmzd9^(Id6IO&d1$U?a? zN_1BJwMDnP+x=CZ%cvSfo^EVPs-j>X2HL<7+sOGw<~O+SdcujfDHPE~m&!x*uM;ll zi+{F#;1<^3hMg;>lyZq9gOC{o_p7PfvdT95Lfj!vfDXFV+g?UYkmbGPGbGIFq_l%> z+Yi&PTORb?ql6%F$w7@X6p>4TZ)N;%(&uk~LwzceZDb1wKI6#9jz|dHii6$#z^168tWSK*cY-sTONQ(A+Y*@p)X<_Xb z{OwaN!Xd}V8E8fn5@YeOlN%|~Rkgauy37vmnQGl#f0M{22h2wzyiGPeyu=Tvjx`Zdj!GOC1iE(z+59mT>Y&*zbwSLUK%uUra1HA#(Wf_LeEG7(IPCIFgLn(8 zuD;f@b=%hUy+1)CnDa9tn;|n0O46;RbzZJ|JCmlMcC{NRDpP^8tW1BaLYwzAfQW#- zwp(?!fOdgzN}F01dAK^u4+m^(^uz6g3e3)|a@(v2XT}wiwG^-|ucI()c(&CG2aSRQ?+u=>B z_JOs49vc&ue26n~V%|i=%ONTPjYIX&dr7y(w!Z3BG{sW(b^C7`ML5{2^$j67*rA$O zTuRn+BAYO>i;FdJtKQ2z7TOexlNv>i`0z!?$V}4WupmcguyC)rq`m%AO;)vi^VmUn z{FXKjD&k?xCfx4Vf*%y4dt3&&ZB4sYPKx%Hpnao&46b5gd^*gwt_cp1&?BDpWrL7v-s{aBxC1D(?G2-Vu445#e1EI zPUXLCdiAAE%{N>R9FBPWeAkr6p8Rw&uuOPlUm^6+f&g7D(yw02QDsZ^63JRP9Pi$W z6CAkfb0qROK_efQH4m=;0EKifv0prjB&W^ANHQK4Mup)v@JVoY3vSZd{Cz8A;#vHd%3meOR%>rW@s68G zxUlRinYPq1hrcT??WSCR@&(mMisRnE`%cl&j^p`OeP1Jyrpt}vjSv=^%+?ADqZ9I} z0{g0KT;vKItf~1Z=f~#rRAD8g!%e%gU}m^)+yExlwxHhncdtUbIwjR)3Mf9#}C&`t9xI0FtaBJJzzZ>aY9sd9*5pj$5ZzVPeSy#m{Vi~7xg+;G@y-3%kalgAx z*x))cj}{>|*nGwlDfbBzL#~H*gY&NIHezy^`Dr8U0Qmk(TVoq0J+v8cn4wd`Mj1M5h#uc2x%de zw<%yX0G&?iTQnqrS(i`r^5Dt6Lo{kx?YuEx(YX{7cJ?B{#Pp&SZ9JrT4akF!c0k)>cRI}M(>?M`X2SW{Al5s!gfiNT;^6>e0&B! z`<$j*Ni#{~2F>ka0+4#$m#<3lG|=`hc9*F|5>Mos2-Wfo>*GSK7jYyKKTk_`uC7jS zE<GyW=Fu#lpvhT!0~YCSq+N<b6=twk#rO{+pA;#=zkherX~JeW84a2IeS!U)yh5PE&5& z7lx9rBYn~T04okEOC~&4f(3{?V4?BvBGO#^=ERTVMySj(e#dCZL69*e!k;D-_Rfk- zma(`t+DPszdRsX;@dj6t!ky=WD54KLwf2nxu-50+x+}3mXEl-OKiKcPc>XIsZVNPs z*D^&I((fiXt42w4>Nc2JrdQikgZGwYC{zOH8BrB3eM3b(&cG&(^=KY_oS$91zsrGHvQ_%UpIpc0ZSrTv&jia7W zS=@IeyVfZk4#t!FQ-{ex_skOU;wYxdid=Z7op!s9O!zB8{L8=Z z9}t2b6y)To{{W9if@lknvV!~MkrdpG=CbBq5<$(I%QMVXXGBOvg?Ep4T* zbwTd-j^?%M+c9Z%2+PXK=5yl7;;@b~41XUSxhkrBX&4f)vC){`)ljR+RhPk>Lg7NFf61UbSF>%6zj67V539A zb11l(m?LDi+UkB_3f}z%zy`Cn#F4EwI;bf*>|pBKm2#C-la323D;~W)%*L^!Qe$kC zSZJ#hxw#QbD8(vZ!VF_*LH6s=u_w~H8*-9lsRZQ*E11&dByO_AR?+GRTiW4T-@sMT z)i{1c<&%B8g`ET$GsvT4#djvlWt)zui4=b!v!-{Prj^U<`%tw%$ z4dU8?eGO=q3T2jVG|-r&b0qkYtF!GI(07kTHhPjnQgA@ zrij-okK>?;CxS)_Z7fodEXTBo(T~QZ)!Br>Hy<7}q0%|F!6Kh5WCdjxxK(X#r{%2f zn!_4`$C7*qnl%yJLZ)>oy68c+)w%ZHz53QV>uGGZ%4u_En=Ob`-lebQHne+n_j>#m zx|I?{y9C255o0Nl8FF_Lg%y^-Xrwnr1azosUIu^@J&se$B(1#xU>Mx7wwM0^I@Qzh z5ny>TF=NHX$J-+hD=HnfEp1ef;aGf9<%4A7j?R)_sGXM`S8bw0y@(?B?ny1{Q`)P9 zI3|q7zND zBoizglS+y7n_}`4;B^aTH}`MUwZ96^yQ+~+Nh0C*6ge!BW3J_wPiq@rN71_VxA;)^ z`f>>cOP|H8iaZGvquMeO(X%Pi`rlsK=~-5`oR0-gMo$$i3VeGVS8L=bVlIbkF;8FR zT@|aZnI*HCc%C@8mois|Sy-3dsj*wBdkX{b6rSr&1mNNGaQL}EhaqxSMQaVB@!G+4 z>wm_r&DK-`WEfd_uaZ&;5fS%D1-ARz*4?L3)GevqB(i}E5B^gVJWVb!%9&M~IiqHb z?Jc#KZ6F^@8&PLRTrp&@&jik4$eurwY;nfHp@sfpWSEi=llp--=~>m!fdZ~{`0^y7 zrjvUGSfUFjzCQLOsZ;!Fx~J>`nVf_Ym%+-98B#<-sp7i z7f0@P0|!{8Za$zyS`oD z166lMr^qEE%w>K-5u9U663;ZA(surZ+xl(Wy;Uz24<}M!!yL29lFKdaRWGCwwJ9M&j4BZ zc~x~ESqhUHy1O_c&Q05KUvqlbJ-VmIBO%Mkc^X70vSsbrDya_Jmqj7}09K#VO-Ra# zc{!zv$F?+;hwcEP*FURpvD^lu<6Et15Da374-!i(c{d&e0^5&yBsHRQ;{bPqnc+tn z0bH?RFPCEf}&givS9t>OCz^i6x#vli=kK z3NB15mksm=;fNom>(^gei`DpWBwEMJr;F)w;eoNkZbCkF+P3lCwJF>WT7^jWV>`u) zOoxT=u~JuMvZP_7;g5Bq$%M`qZkw zJPD$!ndNeGjx-IGB&80iG7Bj^Sqk3c{A+Dm)n$vfgSfDrrkfq{;}DzqIRd20n?Ux) z3H@hFflk&-hx-CjTjIxn_(5`hpgf2!w8qHxtR$8<@xfkh!lNBJb-!Rd$X;@i6D?#w%4Iq z&!Ese+&2Xf#+Bm8%Z@cF;TvgxCD|42rqOPI-mm7m!hyH!M~9DtCPphm6UU7RXG!N$ z;Yyo^UGcqP6&>WCYwq_uU8(!!;_qD4k);tuOJlbrD^B7t*xIq|* z5_awM2KM-h`XrIe$y&D=Lv2CaNFaLBjL(2NhaPugk;qm~frYk#)ZE*l zrP&CAX^|FKRzKR3)-otEBMV%k4wvX^s-$Ep`+d7s*XmElt^WYdsni-Q6|wUaM`RPF z%XD495129U@UC}PS0HsB2G)jX5ADoaKiw+8vVeAwFJjlypUdio(Raf)CSV3JWLMa* zmQ-MR`?q$|xOb}0xa!$;nKZFRe5N?^2tyH&cOKyTlfAwb&rWb?1wLD*Q2IHgks@{T zG|C`gU2d(kvC)r9^{$1fAxVFWm?g^d9GhfWo!)b?G`MgSH^_^y>M*^eb4#+5Q5 zi53(ldu~>c3pa9F+esF#-><&BH;`zDE>?~N!-)fwAef^pz#HxtxZ8h)cEsdO5@U%U zA0|@+MjFI9AZSIbM^H^Dfz%hBSTbS9jtwP`R!)Ieuow6Wsxa7#U$^o&j9w|``en-S zw$~T^$zDNgZT_Cs$-1|*iGfw93+4H^ISw%iNf5M+6fqu=g|d|(Xn%!9y)L#Ja*a+; z2ZjFt6OYC!tZ>5%%axGn<8)O^ZhLn#Fi}(TIg_@vuMda-`-|=QGMA1YSj*$ZMU}t` z3k?R>Z)?A|Q|U!^B;E|S*M~j~tMHsriz6#9HrYx?{m6)x8+6xO5B?v<9mN|qC}|F>DVmI2{#Pp+Ic8i~=JUxPh=voDCuWSt~&CYQ6OuR@&(X zJ1^Lv$1>t_2^4CBiuyiT6sc8W_7wsT=-QWzGf zh2WA1aQ>l=W<*7@KwlEYZGfq|yAf}ABUNg*v#t?6PoRIbe|Thl!NjzAuOyj}?kOyY zN0n8qP|dj&p$04a$C;6d{kY~#Sl>|;@dz^Cdd9Fo>;uYg zsq_JLy=A$@S$db`kDV2Ke0oMxV=7po>MO#xC$P9PT#!9SrnS+m%IDNy*qFk9X+Gbx z7T&YSZ`ig&-ABMzuc!E<%iH{!yR~X&D^M|7fEB0#T7VU(0a}0_)B&9ShBF&(3I+|6VlX=T%B>?_Jl^_ndH*vFR> z?`|2ibn~kn+kgr$eW81s*xsXW@MY@$NYH)dm&WqX%0-`$*mLl#;74>xWHPDo#&_Fp zhxGLt_O5*`t~{L^A7<0=dDbjgSoklACM>Nw#;-O)D!WUrn^>E!hRuB~T`u#K&Puw( z6}*Hz-uT;bjyRM<8Fvzs88`N-^g7zAm!l)Id?sg_%Nm)inahz(*$I$KJ{+N%%=k>SkKtcw(^ijkHo zjx}o&?;_vJN_VVs0Fk~-k0&CTZHz*IG%vd2Z_V6`Yig#F#0ZIb4q9l+!mXJEN<6Z< z-Bpv_^LPIM8n~+G0Gk6Gv&|cMLrXBbq^?bY0>N+Vty|Oq{AtLa4c=Xg$jHs+%X6;S z{{Y)v!_)ArH(~n?B1~9v4hJVJ%!!>JjU{FQ!*)@;Y2U3D@caTrW^CEANads~!9*T4 zxd4qef~iM7B~vxcna_EU!55u>^S7ot{l^?j5~rMfNJNS`Ws>gCbHU!3{VYWN{-LdyeFh zcD=4GQGJ$Pa1DjW#^GR2`O}E}`*)TW+Yq+jXum`HYb~2?Wz?3!aC07Ie6s4WAYl+T zTM#ay-wPg<%eBTlg;7UgOlPkQf8%79> z+?H#1RytbsRnV7!Y^F@ULq6ZRF^KitZgd?*Z1vWj2<;@P48A?C6`@nLCK|gA>dJj- zc3-$aa$~jzHcsq-l9DYOFx+l#0a1RMeia?NF+o?Clbw_rDIAi0z&@;W^&M+!YgNdY z3>k4^Pjec`-rpogUEZ5dZ7Wu!3(RS_=d|#KK!7~>jqka+3d(w$9=?^&VaYybYlzk1 zcWIMNs@ssO9*u6_0aIEanIeeiK0KHZ$RRTB657HxL8~b}!&OR7LK`~ISa{UMgv8A> zYF)|#rI;Jt#C>L$(ZD1 zI;25hdqPmT-DvevH|nS0D^;n( z$qx__g}TH*0EH)A2V4AWp(s#G2+5z1TxjBh2}FobmTz+s-EKDN`Be3Oqh&5Zk)K?;e-hzMZKk7}(_`7Li2Qz%WTJcPO!Aa6PPl9c@j&>ImZ+Y-?j@A}XLt6cfXR5Y&V{liT?1k~c zy%}M!-5@AJg|GwR`0HCb`4S;y!f4`oteT&>` z&DdP`u&p(y216UHkgt#*GPS`Y-fliUN8?pw(-uQxi3Iy{YxchFK9?Nl1aMy8X!MdsKCBHXn z+5xzFf9$NQt}ik)$nxaL#Xz~R-zR%Rk97<-D6v)~@3Q`tBlE58SsRmx`5C^YG3Ah` zLUzL;+9HwG-s1lB7W}GyHcXp;web@zpN+_7Sz!j|A`C5H9BnP|H`24O)>4_hGHBn2 zj~f)UbM7(?tO_EtZuD`euS2_Lma0h4@+q5-FNF*EoQ+h5_-a2M=B}zC$smXWn8lR@8fV{#IG!4kVl@McCnrZ~>lZKQzByF=UZ zqfbPq(9>t~Ip#QQmxl)fd6c*;@&e0kr&fC%+jjKnP`0UTTM`3bVqh5NENC&qS(9~N~~nN%|Z0`0mRn;Kgv+hBW?|P=qp)_u2zm_N|ttp_)C(%4JNr(q(2Q97Fc<9R;UNACfA?-g(|y6nY;i1c z$RdVB_T5!NfCbM^m+w_qD9yQMLzQOM$91~=KN_S@&bqaj zSoO1sG_bsR*$Xh(G1B3EsG3_tsrc0>TolydmLF#DvE*@HX_-E&jmt*HbF^A8!+nc< z#fG((`@{WFwu()C(MCAbm?2WzE??kl30ap20zPp8>_7WjHs zLNPF(-suE?+a6(T51p~%+J9E*mrvzcZ?skZhMHI8kDb|8JP;9!r~yMZt<$}DcK%1L zUJS<~#3$vgbZauX^_TW~0~hwI?Nqgiz*e{YZq5F6>+0b0_Ht{;HK7Ag0<{1&r~z7l z9@GG>Kn?`}3(UgPaQV=#hDanpeK!kUvfkp2`x||AJ1hF1HS@6;vN0p^vqb?R=5bZZ_O{^()f#kJz>iG{SPshd+hGavAwk ztZ9&Zl6kV{E&J?-(Un%X_Nldj=~yk+PY(t=ES<1YWcl#CvI!$eNb&fQoSA~#aIyC$ zrq()BW)85(;pE33ByvhVs_VWtN3uXhg)O5KuU}drz67lUVEw|ALpgTxIe&YVW-6_F zkPY>+?R;SD4QU?!-8zu&dP`SHCCzY%tXV=KYk9OYOk9ym}_9+)LV`Ad8 zSokG?jqLtSq?ZECAY-5-xanMO&AG5ZL*vgDK5Ur6M1oPEWe3Q@#4t~3u?G4N!n0cw zYO*$0%PvG%xYCH$7@1mM03zY9tCOMD-{o7?CfbrF0AC_Z=$aW+%(467a@J)hpb!49 zk6P7NuL6?qgKP{;80KhC)?|XRsb=x2CsVi%!}R|E8sz&HwXGfzNVRNFIZva6&K+){ zoE1e;YqGZA@wF{`68=R&EL?Q?QNNNOr`W`ZEK#=+Z)fQ{y>Ix{U+h&eb!?Z3#rnX~ z1bAalYb=Pnf~KHrd))Uwl}7FTc;t1gk!D54!;cgiLL&Dm-*BpKNL9AF_BEYtYdIT) zP_`~)jV$maa|a+xo^B;X>$MT|-RWHkrG_Je^#&9sGBNDiC1nag0D$B!x{K@UR-p+= zO8CLtxF$Kz|P5}(kP=_9*nyz+%T<+rphFyRuGnUM ztTh^_15gd?6#WVziwlL1#~wH$L=4L1i4Kl?8;@w|RIg?%39>OVkz?~9@&b`DQVOaY z5C!e0ttD2o$jbD^{CKt_9D+n+Xbj%P*5oHsVh>MRx?Q)F5D$YaP+=KiV&o|j*w_(nq;UUIIT2CP$QXxsCibfcdstk(flS+5NQ0j7^6xnFc(fEAY4*QM(>w635_KOkda zmnw{A1V+&SOSSGvJ#;$Q)!8o`lOd2tK16X$v%@|Um6T)ae|z8fNo8<)lTg{I(l|GtmI71JBYJoFKL6wS>$g0hv9F9bws2{(ocyU zia=y|v@%FTzT@&Wk4t(QwOe@*J|yzVn_#CRcW+=P^#VQT@DyyM)@BC>bEI*}F<>Hf zy2|3ju?J44y)AZa2_jBE8uG`GWLDfPg>SoeOE00fawxln2yiUNe0aQJi$nghw=+gOj>I)XtibS~3^VN`3ZtO}AXt;U)jm94CvIbsFO zeb{czs8dqzG1j`I#$Hy5ENi)Psxx?`X zjhSqX?r(CNbk?!_oBWX51myV$rfjL-9wMlp_M%^GyRHEsbbg-`SFVuK&P170k)0gK zAe3377sn`Ai0`RQO^)wc>005E1SHsj49EC{!3&JQ;YvGS(zGuX+#B}sj^JDJpLy8W$L{C7{Xus22v zvM{5wF&8>fYu#o6GC7cAG>syv!#0@78?1@}Jx%?`;iYPv{-76&i^w(yFP9@A>N_F3HLaz!sCyc45rY2!j*pGwc<4!< zX=aEq8v^+ckei@Y-a#tf;yYI+#_efXY@|+{el!zDh`9qANt*4Dz_WXn>Mhl5H2i8Z z-b7GLWqE`sI<}x28{1p;{x#89@(Y4&GT=0_(R$>CIGj6TqowSeuk_CB|+m8qet8550;XE7NbJ>(Z9K>=Ii z*KfwXWoEfXD2iyIk0MC!NR7y1fDdTsMg4nK)yj})A{=~4G7)11q+#r5VHq|TKMU4Y zb|y(=dQyVVcn5iMrZD*(UE>UAYkOFM?YOYktt5(qtDpY>>EOT5 zyze6R8dcDZh`0MPE=1!`1|-KCEQeN}azT#3bSu{Oy>k7hRMUAC3;zJ5!#QN8NtQ^Q zcue3rN3&jwa(16u=B3*3YgY^>oX&NG$uyAUa+U%j?YI3+vLwFC_N7HH*mtvJ5adtD zaX6Uh=={rWX8|?`rU0k+U z*w>;@%5ichBK|+BM4AaU#@-cOQa>pdU_NHhSesWI^|lVU?6Od2aisCb zA>b>Od*wgwe$xU82c^ZB56-$NZ1aN~*YV>fFObB{IoOg$78sl`noHkcYv?y?b86~V zQIm$;gMH8T#5htwYJq!nmyL7&)#tDi~VPWJ4pdv3rLd5RJQm8g?~xmB}poDeTNxbZtfcI@e8j zIoajk{*akD(EXE(1PK|(%+HD}rhQm#1<)Y)mDKuHA8Gy!-|Mf)@SOJB3oo|Yj?kYi zf&D!+uOG?kE)2IS${;;~THjwLH$B(wkH5K?{?6by{9>4p;o`>wlsdX3cMQko2LAx0 zS7Y4b5y@RjW#qi!KKJLotLtW+X2+N+%?yMvRztY-voGzEN39k64Lq0dR?7#e*-ol% zr&T`#sIK#bR-grH0BcYK+JF_P1E44Z4n|0#!I`8s45e20)sMo_wr9!zE8;^bvR z1~yS)K10N0NNw&`5ds;tup{GoozAcJIox?GmH8>WnMsJR202*9Oty^gUaTS-6=R~; zDpmC{hsX~xm~we2`CP^lX1iI@V<0H72u|Aqr1h;Tu+Xh(bL0n*xE7BP^8HbVs%f}6}BZ%X1bd0o`F&DXSjBC&-&G9vCp^jJr8s7&|Yp-1Q`MtQBF) zD5>Qii^!5?Fq}y@d*qMauB-Uz{40H3l9F5Ds%1b+BHT|If0JfxF+77i% zyK>wZGNBR~&<7Kiiyp%2#qRLUzc8C);MwF>jaJZKDs)y8g|h&Pb{>dAuVC z_Zf~)humR?PZN+jt*^GkpLcs#pHH%;4H_u;yxd34lL)M!%&e27vau1U{{Yb`qYbC! zJ!`i0ePor%tCjftQyXPuv1r$NL~rDMECJW2r>$|hzX;T-h0E{Rkk2)*bx?%XAbP85jO5iUhKC$2|CuP zH-JF0ObljX$R^b7?o=|XsE4fYzc$R#~ zBu}9(n^iY^2CAT|i;Mg#ZGUEP)G-zKye21#X*0=(9xJ3#Aon%2EY@p{zs|S5=i`y8 zm9gGQ0{O{=9RWLiqq}+=Rrt>$EYxD*E3sx(kOH=|Np9C49@U$zoJepD^$R@VzMY+d zC<_}MY!ADj{uOG90zx>+d0B*^95IDmOS*^g0yeex4Gp{0-j!Jd*<%J?HVzn6j2z@U zjN5GJIxtakHv0AJSZuAE=LI0flO8~><)V$==u=@AAJz{+*j})8XreFpXy@c4NhJ_r zn>W)f*-iQ`?uu=%J5%5VkV;RzU0mIR5}fyNeFSm6iQ@93m{f zXA9h$5oDNv5+W@c>8T1eE#9kMkv3!bX=9&1dc_~@NXq!&TgXRSTe|w!X1PX87~`f$ zEa$}xEDJ>lRX2XR{B2rR&a2gp5l4#*QwPI&97v4061RVVBjwxt>Dv9U#0TM&WV>H> z&{;|MTz0ts02|fHfdnHU*1?T~`J=gb+tI%oAP8kIJ2ZbIuA8@d{B#DI{6-SlP{05r zG~(X%Kmi>!9-^i8v-S~T6zPp3LmnJ2nKhNNCSt`)n_q9WQrE2Po<}8w(Ba1uBfw_M zU)x~L5MOqz<4|jkjoZmU`G30*o?Nq$Bn+yeWMT?mt;_qvKlZzGZO10lfK4s>B^Y zzTE;9&=4z3NHeTP#>tqOkiJ7)E#F`SbSKuT^>KkP^)9n2W5i1(*vGWE>MTu6V=Q2q z9E|d_Nh0l&LukQ`cMhb0eq&8*LTHY5VIQ@~DnT(w2(as5JA7zNA_&YcAuIFB6mHrG zus<%nJ>9C%BcG-|OC$K*b%cwO=c8&pJ~W>h6C`MIArf5st`=CH zpaR6{Z%h9Gl~fW+G7AMj3!(o2(*&;KJ~~u&92QtPm@#C|oNp$s|mW65=jd9x&C8@;S#9x+~+okBTj1I_yC8U!eODt(4HHc2#Y;G3TYimldkddH|jK$Bw zgeKu4BCEyIdDN-gEv3DBRM%p!>NJejZxxIp5~Po?$QOF8?ANmNzhBdCwb`#@Ya@ha z@bO6zOEA>x4bJ;|U2a9|(Aju!Vq8pvClRN~$HiqpBZXMMly3x$01U)iy<)KNz{*V< z#_WJHHSEQ~Ru=sx{VTen2*+P6qkrx=Qq8!K*Z3aytghh!Eck9ravMh*0I?mxSP{?w zK+&2JVwXg_yly^2$FCf}QEgIb+FthQ2d@JTa>V3tD61cpy~DijBH z;D1)OQY)_aRZ>bu*X?-Q8cW0xM5?|7nQSFdp%S<@E)Ksfa(|KeekQa~XtAP)V&$a7 z7b4i~1+N+TmgMc%wRY;>tzSX3i08>NOD06|i4sF?$i+^cfDW~m@3ryaA-2G?8VAQK zH@eI=Zvfu+=mA>eui3QBm`a?OvKJebnF(!cHu zfC!WVJ=ah+el$@{a-dC?{7l)Icqho<_{G{87;TYHKrC(tucc$Qs;>nngRCt6F(XiM z9$DCu!JUhOf2Y4ncCGw84Kq!H%)yO|kUWzZ+y-RZ?^A86x@twuaqd>TMymKK^SNZj zi4!7H8e{vYhU}I)1OrPC=UQvj?C?vmR=EYBX4+U<{ze|}oBYK?I%-gIZMjQc;ZC6S z2k@ex*mv48^(iP97Kk$b!QduW5 zh$PP5Oo2f<5XQ`H(@Kp>Z5|8U;-{HSi;a<$2a%atSzBAZ#emy!t(5n#MqwUzSz*6& zaF|i#La;^TiK8aXc-Sy)t*Pp}hL!@OR>tN_+pS^@ZcYwXBTUh@*rO`Uj77ESdgx6v zmemHvlw@VEx;P|94jM+X?otRB_>olbjL)UM(f;XR=kk-s%jP~BWU3rUGF3J#x(7() zjA|})z4X?rUe#xVJ5i#${{Yf8$@^1@$3mme$XrNu(P3j@Z|c2A+JA@iG|;~z!ub!| zi^n3evVaP=`5yJPrg1<|Qi?+#Sxg*=OH?3>&R=noImIET;$YG;&2fxOpH?jK!nbu*tM^pRi5whhrs-9KPi#q%8*4VRV%+TsB0#wrt&f&umD(ueV8K#7zV7=@w;ihMS*|$;W1RkD zju_b)GGjxPl5DRpxd|8c?{(Ee-?jDYTWF=FRqzdf@mX>GEYrM)B2Wg$ke9MwU4UBV z+H2anHr3Cf9awAfM=KG~LwgN`-B2%eRkf|Apj%4CYKJ8|8L4uxf7^x<-c~6rM3T-_ zfW@1!wRNg9HpzD(&Q-{a2w(s%CgP&X4#G%3#;P%nMdXh@d8EZ@6w0uaJn~eK#m7sOu)H#?2#8pcNnpg-1KbnRo4ibl39zLSvPU!~DPxmtxiPUGO>JfL zG_6?51j94AW?9ZWafpOtW3v!RwxNx*-P*9GsZz_5o=I}Zd1eOf)G$8XZLNi@YoS)Y z2@e>PW)v9m+Zhl%he3Bf(PbJ`JF4@@(OrMfNhAk$4YSY7iU9z#ax zBSJQ!D%q}0wA04>LOA943yuKW;v~WlY5WusIx7*yGhhbd_S!I%PpHBlu^3Kko zLAsHl=q+tcHroPhT&XcL{L14a6^jPFgN@_nHuN+)N`R5)m`4zfHybjUWN?PU!$2F? z^Qom_Q65(!h+()ER^ z{EX0X^2a_QUmG&L*ehx_>Dcu*AC+@nw(TV-171dKIc8a<-?f#&Wcf(G+YZdVt3^qM zDJtdqbe&_59JWSd?~F#`LgN1I_xVeDS5;OrX2#6>VOfU?TDB+NsVH)GtN^%2skL#_ml z39t%vKNDN(b+6-900`Wi&_r?KRZL>rynTu3-nICf@fEL82)$464of<_*Gjb?4#^L-sn4#*|BSC+KQmld?lWdZ^04!~~Go_D9f1Of9 zj~gM5_GXYBrTqtLmVpvv)abfVw%XuC=`IW&!>WJt_ z8W0OFO-busf7!Qdb?|DI0{KaBq{lIt9OPuESvE$lrA3HBO_&?^6^6O59s#H+kY~Y= zm~gZk$`@2JZe_6fOAnaaPtLlUtNfghXcjr!6+XJy;h4zSFx$aq=&PY6c8=z`-P3=F z+z_+HAI~SuGegg4$to+tv2}sx-%8wvVz~AHAv9`+B45&1?++r$Y!1*j& z#&>wdgE+afKW%gey=4CYE&!eZjXmO@$>U&EgAj{*5r1#EoAjYOu10xx{9BB+Nb(qx z%j0OpneID$e;$?eYSn64j1x+k2pb+*JhMY~XbsxQ)RmX35_>IV>bXPVjg^aylK?7N zISuNjCIe)M%cCTPiyL(JQ>$nk6}~BKuse{*`$F5~H@RbNe=62jB$A>B&6CE`N#iHo zGVdEt&A+g@*Z%-*CgP#wX(8IN&5j9~Zf90PG{4So*YKrV_+Tu2;}f&U3rb1dAIWt( zdv2tBY1)zm^JRIm;fE>_8b%7qFj4_8{{X0=G`IaVDRo$5l10VOh)B`MB^x%A9G>uu zfAtW7?LXsLyQaMunlAXv;E=Fm;|{TtF&88zr*4{&@zhrq%EQ5Fm$;Loc$O(pw9FN} zjj>p{zwXFx2g13kn{d%`5t)qg?6Hnq%y7b3q$wEOhef`dzZR_)$}BaKpn?g^4zH9p z5QBa_$F}F@xaw``N$yiM5(wmZWM??h2@*}n(n%ecdR%CXO}ckAYTewhY@?kqWO5y(`L;jvZNM91IWU|Xt4KKdj^&y)qfnWL}(!8aTg9~ z#Bi%jM)m`90CZLsIxy{OTK3u4zXP&Cj|*lyJkKP11VwJcc7{t_k+1%B>MY<*BF;JZ zzB7o1$j_ZDR%0l*O~;`FPi_4x7Oi`G4Z=Y9atw)tUraG)iZgjrXj7(yo9qj%$^I2r ztS&;VhDhJD4W)?w zkZ_SG8d`w9y~%FP}*mNZ#1 z3aCc7R%Bn(yZ-`_GB9vfNxic+(x`u0Fy4#@pdD}CrpivaGhCF0 zL89kh6E!MIvO?JuZmR>{dIAxk9 z7=A!NTaXexRcv(@w@Qk*rVZ@o!GCi7(Z@n&ctMjf0!Ae9Z&DeHShyN)9R)=-w-dpy z$qD+M879E{Pl|A66GBX=BSdLqER4*hT!bNacGiXYS&go>MhlUHk>)bYvqdh!ZJ6pw zjY^9G0+n6fx@ldsN~qzxc3?b2tlZ`*$ntE8Ru1i9s9kPf+hT2ct*h}Cr}+o-Z=00= z09t@}Cw39UtOUfxZAy@KsJ?=uT1y6-C8;r7>B;lm+1=zDinzH@J1HM9HPuKs?%7ie zxT~bl2UDT3A*_4f;a1Z!lJD&wxh3McOnjK+w3s(+V#pa9g~{+=W@O+*iH|ID=Hu=zd_XFD8asTZ`$Kx@D<8P=`M_B<+K2IC*fPr%IDDBK5RIjXyd~)O%$-h8F-{EVhGyJ z@Fb3utft1bx>Pc}uPF{><@PLlR>I6$+j{l?04nU(nmI3dJyZK3ByxR`v`M~La;1($ z{)N8i#l9-ny>`^%w@BZHM`wFpQat-R`0&B65UvCruWxiE$$bKVQse6@mirE!AVcv=E;? z`h%vPwY^fULK_3e<8!lSQ4_mJp_P1s!+o?*Pjy?{TC9o*u`qcom`*C$AeG5sDI0^w z^Ab9*!t{2mgcida8x?$+07;j(V#^XRO~^DQK>3K$^@Fo&7XvEijk7re9z<=AkB+6K zjKA)cQF0m0$-8OkR_v=;UP)w=N5@MXIgqNT4|IXaXKNjI5%^RoSOPpuN%Arz&7LKM zD=Cgf&@m?W7q;VSt63!oSrq)PCT>WKw2;C2)hq)pw>Gz}Dr4}aEXzc6b+=WRjtzg9HPPaCpRX7<{mL|z*5<{ zSCU}3&-*{?U(1hll6eB`7L~#T+k28WpKbN7dVS8W8Bk;L^Hnp6SsictdsWMORPEYH z(Yk(B>C&=@keqRmlF{I58P546u)Tq{r_n`cXjvLXv|nb*z^Th=LWl8`AyP|QV});j zu7|Cwn%{F6MSNh7!9FfASt6O`LPwQZO6?7$l$$TDk6N|4S^5eBaBw*sz&RP(STI`R zG80!@?RC)mRQmNb8#XH8a#F08GjTZh=`KDx_|O(ugp8y!SP-C%cH2PRFV?f}?Uu@E zB9k+dz?MkBjitzl>RH=u*GmKN{41imoJpHxL+Wx1#}~|=;>CcD{{V^7hLYrPJ|bn! zDnke+NtkkVI@45dQ$=1&ynxx@gV|d`a;qbM-h9%)ofez_2?m05>-mzL&0cthi+- zgFnxw8y6!o;bXoxiL{8blYK9{cYni5^fWf>EsPlwHW7zqvyxwM`Fnz+`hU)<*x(NG zylW2d33nj&8V`?u%AGCh0NFFmF^vebSy#&b+pl0i?NwBeGDDD{{WC80BJAK^&HW&H zpXEuV5+qNF8ix`x>=^#(9j-_HB%LcaVZk%=o-rgi2>va_ql~tS4`KXjektT~5r@b` zl9{A|9%NIrhhPvki~{Nfk7Ih9(edCp4#mjFh##hbRPQ9oy5V;X3F<{*YPW_oinW?) zvsjtK;>O3yWFR$@xl!@{HPh0mLRkC zBM`Bvh8F~@SPqA!zw@hF*Cc`CiSMvGtWHR>>(i}=_|}dFN~@VLTzqB-T-&J(JA>)k zm0DS1EFj~3{shJh(lE4u?IFE%w!XEK-Re>-mkBX4cjhBqLo3+(B)x^!;4xwRD>t*U zz}ht@A^w&;c8AF%QGg;Rdd8|ZTi$lx@abH3tXK@|#{~K1L=2~R+cCRD7S}3T+jXL? zr80!nmH7zJyRhy^jF1=}dJFn@wOVn&!PZz;BY6$u zZ)j3?5?e!i{3}+ILOOgdKO$otq@2bM#L^ZGZ37c~j`~sE)e0a}za1VVaODXjnF$71 zY{(UkfQ#w*RnfNPa1wVU#~pr_BvFqwh$-#{$NVXD?B%kPz&f)++45gIJ7D@8*Uv57ur27Q)eK_ z8d}1a0Be5Ud^oUUWWJEncj(@;qqkqn21Gvkq5G%>hRsuQYt8$s#?WohTYni+VmIud4= z9j&`^c;xpp>#JK|hK7^fXM!3B$mSWR4dQ6=)PSMV>VTVj7@MDQttqPjoDj502?)&6 zWX$f+#SrMDsV!>*_|31vwJhvFB?g)?*R4De2T{R@ z!BROK#b9Pbb_T}boG(zd9qs5+Cd+qtXPP{>5=K>VmPELfS+=uo*31UF(@q~41d$Ap z&ydjK2%|!PgkblMTUeFy6Sn$wtrl`O1=7h7jdA6NX6V&0!IZj{{Z6bd00&hKYu7f) z=0Op(`4K6ODBT^LUU^Wf#Tqt%YEQeN+&c8BtyAP-b7jd2$CEUV9t``MbwvvMWc_hO ze^0mO2G`P)t|0;>)My1p9L58|oqU4wOB+Zb zkhiiGCf5XMr?=hOx@%ZOu(|MNlO^&pm8E8q!2u2XYQFKhv`D&ilpQu1aHe@l*i4~!Y57~mnmNI@|G%dB8T~3CtzGYxY z);}SGmyHBM{{U8tx9Xz-)quNLuAP207W+OpHJKsG%!@t+l2-Awi|%O!&DTMD_5L(! z`%bM&6Uh8aN5x|tnL~TaEOJM&_c+i2d;4r|N!QZ4_FLtStV;!a<^*R^~><}c?pte2PCo(nM$o73b23*i~j&st*9orc3P>#Nl6l9IO9=6$O}4dncu99 z(%bAn7aG*5Y#s_so^B~sRJ5ut0z?&ERR>o#x4XT)D|+emC$LsGAr#7!#;qcl$!L{| zs-$+_#{TWs*5~q~^ngx7t}Cz?pGii8+2=a70*>laTSG=VY=+_fH+e zV&nlHM<3)?kN|>IcS8!gE}NHUZ9Wyn_AKEhZKAnmcaw?aBFWp_PL;)0cC#(YhfIjn z0l&(M2Wyr9S4A0x&ujaGiqFHF3M`DUamuon)7W~A$=G^dt!t{)a{P;Sr&r0E$^;bg z1!Xr1%C@<^tZmqimDy93p2_`+$B91D%XE@Al1$g~qJkuhs(=zp_0!z8>}z_MUz2|x zUL375r17(3w~lq*w?;aJBK=KVkYs-F`?m{?^o5H z3`>B1Pdgt9D5Yj-Eg-y#p!=>5xO4;5);m7Kr->X%zQg;6j{A#>%j2?eVEWENSmccy z27w|~3p|02(u~om(RDS^f45gj@>*-w2T6q-6WBt9t;taX*b0mW*G(JWQ z6cO8KU@x_YYHNMs9AIgjNfeS}M0nhEIN~83ljJ%ea7O!EL#fu^!nCc^&BY)R;qn}O z?USA(lO}Dk#}4K8sQoMlb{c_IO{&ZB;4(KICnP7fHY_N?HzRo*1TD}gVP+o+t=(gg zL>Ui>jH=mB42^GeQYmDOTe8R)mbY=*lB0M*Cm4KO8975Vc;SIJc++mcV?*s?MaQ|c z_|@BEN*^Hy9F7idM9`f4lZ_Of#$5=Fj)OtaQA;GSCW>sowjE_<#L8Tfs!N+}y9?YX zJw@O+=>*#j`JY)C4qql#0+}pobk$EAL_1gOD#-t5^2|ENOBvF(Z_s!v<#a zi#_yUu14t8^j*T=8m+qIY~sl&-k{@dxEHqI4w`9o1-g+?ln8zTC{BCJJ2dME5#!31 zjX@gRF#}Z{>Fm3V4Hr2w;pU-9al=Ou*n&Vkjn#IG+oqg1@U3%A6kF{z)R1GFU!tvaf6Dh^`DC*u-u?@(z&UzztFiQ#at}R38cvnBwL7%LT{mA ze`xB!->pvD!@%(ci+xYi_^^@WxV&Y}+o!j%*Ra2O&YInv*nNyHe>I&LY)If?ktO0R zOC-u$LJj^^=Pb1;Eve?kAdZ~v4s0tHze+GpvSQ+J;ZyrAJPD=E%r54!95$v z4E$#?g&3J+@ZL%iNcQ3lQl&63y@^bimz1&*jjBJK&knQ)fl|QA4 zu_vYa_N{44*F1^C6nI`Y80|cAK*avr?~R3ptgCyeH|s}r%nBeg7wz6H<9xTuGUXrp zc;%f!tZc|an}d7p9qN92&k<7LBNIO#DoSCJU1MVyH@P-FRC)^ZtFlzV4F_ZK8F>#P z;jwj%LnwW!?YCQz*bcRw_w`vE7kK{wXsmFjA684#U*7Od&^HYYa7 zV1f=0ijcfzUD(|hDb&Rfxc10F{Y(8Tp{*^x?mP(rY{9tcUT9bkHt-eEyOIWl zbiL}U_A7tnp^OVQLA9gtLhCu&SqNuuOPdb$wNRS{hZ8FerB;t&h>-h8V5~K_rM+ur zm4pwGCKS75TQkXG*SexV>IbbgR*7VJvF+GVTVfk~Z*O-^sx{R2y(%CN`Y8-|nF#P3 zGv4jI^d&#W)rZQbo<{|z84hRskd{f+3bC|Ko55RXr9L;Twr;Oj^%|*h$zf#jnI{}F zB&iE5ZmKpQ(35lX4K%k(%U!zUw4@Ig7HAR|l5w9bO=#vIgrpv|1ZV^oYNVAg36-H7zsYrm(GSQyKUN>s2xyF=Fh0Eq2ctw0|f<`~1MVkZM} zTM`Jkx{+C0zw9;{no~ayY&h|GHU)@A=IR0cYJXR$snq(hWCv330DZ{p-!Y;@jlXs&WgRJ}PEArbK2az+VDd z%zK0D@uG^|VW4ara_mV>>Y&`iAlz)Ee@W;%>smc{C%1s;xcFNhNphx;jrW0W0ce)n zKvSyj@9?PkA;KF$$%eTRyR2Jr#hN8XvG)AK+IoI97PfE@49SYQL8MTf6q}nH{+oO| znri`opAHT(u~N5?*@@OgP0!Jg0FO`;FsJRlH?~ypz{mNbOY7FclnG zDXo0P-PP$g_bGwLSzyanmrNLyA5hlfRdDOEkju_hh-)h+E7*?MZ zWo8;Dv0t0Tt}OX7q;r%SMvU%c3~a|xru%!}t#wm$q_8FfKf2Mp?Be243lC%5e9Fu4 ztgR+;tH#zP}B$I@tt=%=3;Z5GFPbEX4(!f80!i<&eG2_BXe&wP$CXjxZop zV}INmWMbJ&Cv?T0OYO);zq4rSx3TL`?cfK2v9d8lQY*=y8!&lbaV6rvwN*b!7j50D zTa2NcCkulbMiyh>Exn{AcWmfI+oO71b)j#bP(b-Dj|`qTWJ#Uk5k&(jg;ehU0C0jW zyKhnmwF#?u6GX|An2PwbGl|B~&t45@e*ROqP{B4R(Fmnsdc;m+bKqy<>6;nkewAwps*QHhH;7OVojHec618j^7 zO|rl^HUR1JmGrJVE)5Xo80Q`-V_7ZpxE}S>u7<$>04f!&P&&qw3^$4LqkX>AC z!$v)!hp5okR;}G1Xci8lNTHqQ)mb!*q3M3W>OUV!UuW#v>wrkFSO{} zmuT9_(5Tk2uA#OD`C>LgRo-%^emuHDfS+xL^Sx=-5hP8=WaLhhqj;igt}194r$A&2 z@x51d1AyF4DnTTVk^;hwXJAR)@zb&CuS(9_QUr?__qKFpSzmm1C0y-K6n`^x-+z|J zrCzMqx^iiL=*O1PWWTYQWAZ6mIddA4SZnaEt0SR2m|k9Dzcu^+017CDVmwq|sS&a% zk|-iYfQP)2KXI^ivFYBgdxVS`cf#Sc9PCk{k)pzo#ETV-fU=1QD%(f2^#1@l!8yRI zT%L~)C5sOa<;~g^WMMp3HxrBOQWDqpfN#>TqwNUjPXxJq{tStN*tn58$mp55l6j1q zV>VP>r0p8q+MM-Yk!x;Iq2}@*FT&hzFP3Rq#zVDBgwxtfXe6~~NL;hB_HH1y%S9$ObmUq{qiq}=)&ySH_*V7F%Vi82Ou3~IlH?V=iPrb0 z1ju|7muSK&tAz+o-3SeGeg?Qc&KcFCfQ-jckb#tt0XF!0*BUz6ljYf8J`JG%0KA$H z`o~J>)Q)?e>6L?;^AnwrBv~0_%ZfAPc#y5_{YKUT)uMG=2S)j27c+>F@)La~K`@3> z8z=xDZ}it*rz<>|?5tY^{{U-$aVGmp9z`U~`e~(!<;24=7Fnj-V0Vv`Z_ReSYW6Cu zoY$*t^Eo;0S`JD1CzeLcX-;lzk~wFZYwlSaY1wdX+of_w5o%>4FS zfh6%qB%&Y+qYWFxhtazCqjt$~ZK{|FlPizO!=6l;{{ZdJ`%56)Qc?5mu-A5mp(x>G z)>B4jD;vj;6rWa-$oq_aR>%&}%iCJrIeZwkfK2l&Tx6nkLjgxuR$zAlp}wBF*C*TA z4lBs%P*1SA^}~IWN*GALPZ3dYppZTLj-k3S>s+$agH3jZTz$izo5XUe=X6<^uDH>@ zJBeAZ@`NWs*3oaJZ+6``%VK2UBSilIwJ!EutL>EtwbZHU>2ueyuRCQWP?|wT6{DD~Jh2*B6P$9Cygf*)z)GM~7hY zou}Eo#)<=Kpqk{p+G!0P=0IQ1<8_}NQsO9mx?5Ku9;?5v@~!I?NiZ|>Hy(wfIP)15 z1gnC|8Wd1Kk)u)tpT3$`USIKIDY>|^qePrLM-0GyG;S=+i>-={2F5j}q^2Jvv{FaQ zXTvOvWfD0XSiZMW`fID=s}p6Cea#X_5XOj%(z_86Y!`QB_1)@qtUtzncpI^z!~13V zJ}hO-(m|G_HcSqUy8aJlZwoePM=GP<>YH_alJqbv=40-w5Wh19uh&rE8E1?4Ds5O95np3$n|9*v z1=ivESYJ_CKdm9yIt~a5S}Q zjA z>AP{zUZS+Kd=0ZdmG=xqrdh)0##krQl0pUB^F{@_H&NKvWpv{Nb|>NUxEwepe0d&B z?4}|Zlx>(VK=OTE%bB>snW9h=G}mmhokkHl2~mE=9@Q0sTp*e%0tw zAV#Zz;dA)UCndtPs zN`+uIZLs-t?Rr(BPaOm*OT&Y1MB8g;Pb)NQU<|wN8!uB}mgo zR}Lr#jSNOW7jKZ*$Ur&}G_L!%%VeZqWN;an@kIET#yQId5~F)r9Ccsm+v!-n%gdB7 z&L8aVPAut1B_y6Lj^SQQh}*CM0SsHM{VSh#>bk{NM+NbNV#egf9y+LxVgu#ewl-&R zxasR$!;-f$Qv~v}H-=MinKvHmjaN(RFR#Y6tw)qmaeM$T&^z)6LkS`v711@s^pEsrN*^d_BU_HYM4CNoZ&O^ z)-1WACM>sg#~VqJgkW8mFFp?ni-@%Nn+b8lij{h0rUe)(^W+mdEBOBLmY8K;tER% z$LTJ<>jE?;v8@#3kStC`cX*pysZB=TCC^iBK^1PEMg<--WHU|}mywRk^)}F0f0@#o zc!4v9!FVNg$N)QVSg=-BglG$g+ zK|Cn$<5^ZaGWiXUxb0LMx`It*cOb&Jtk|-Iitz@KQ}!cJS(JlrjdQluowc+QU42TN z1u!aXKIs`OjK;tVg}#^QKaFG7N|wkzo&$^|l_N3k-w_PPMct?ex8qxIfgpTHGiBsN zaYk`f3DMT0q$m}%}BR#bM0D3URhA}a#Cc<_9o zPm;S9?uk`kemS|^RP zvu!(m9_?!syDwsxJl}6(hN0 zBAPM-fEvZ@mO^b^>Kefyl1~qx*ha_sn03ANAPasuWBGi}L)s@+Pq@O0YXdVZ67#>x2^E5`w8W!N9eJ+Z3oR$wo$ zt83P?TO2^(haW0@#Z-$Nz~lqIKt-+dU4Jg8sjV7IEr9vFf09QD8Ja>1yvJzTpmozr z{3&a+36-ah$HkE3(KPmwN+@66ovh&(9h3e#VxX8#SN1tLXCuo z)X3Y*dky|xmC>%5lTBQkU%M9|;-b#6<4&GQXN?%^y@6Fy+TO=s!nd)q&|Ot7 zPJ>@sHK4m9$86H3NZLT)2;?^a*+4&!w@Xvprv?{hukBYEdF_+Qs6xdZiBb|*jc&iV zzSOpc#<}_muhiONx0*bhoRI-W7Gnu7zHiVr0q$+0z*dgYgKE4vDe-yeCNss6z9?Gz zCWUTMzfSEGUbER`krEAo_XZwUHIQe>mP}MV94_!I0Nla0Xu#?%T;Ce!k*$);+@4bx zI~>ImBC;|Z5LHKdrzUp6Qzkc_420SHt+&_>?mb80T1*)jz5e*OQw3pFpPpp8Ukk4lse*RNEwA1Z7eWkUWFaQb&5Hvb}jaE2*n+ zW`5$E9l1P{3VTvVS8I;O+Is0*>9d26bNrc)`-JiG{{Y+P2i*?Q89Ht!Qpn=_Y`uOp z$M!b_)0LA_?Tb>x^f-(t;+fsg+H6_GOqgq2B= zN-C>gMnBW|)oc3>-0*2i!K=s0<3<#iO^}}9)d}%4C}mP=BXe>#cQsiW@|9@K)zRlaq-gLvM!}MADU8*#mSS{I|WY>t0o_ zXKe6STooL588LGz0Ae-x)ip~?m?o-R7u=vud+uC3PD3&@ z-z;!s-K*GgDb^{9GN*&Mv;Lyv=JhfbS*1r zWneb@kMOQtmv~6qezdq*JlS87!=LIl{X9n7Hrat!OWV2rJu5p_QNssWlH`B5{{X** zYY5Xt2eTf#tljBWAeK!OxO)~WFquu50#-ftyID#0sJOMhYA%5T;&F+EcpwhaI9PkGb+EgYH`}_y^;G=xgtAgWIhol98c1<0 zkz&{rC9f$UTGtzN?lr9SQBP}fCdu)$hlMb}1EpRKjZIqyh$oyOw><&kTWthkl6$3Kem*#7( zw-mQor4lrHCnJ>>JXmj)l_YW<(Ztw~xlX{h4DE7$W8S=fk331F!5&^xxM<~+2$e*! z*j?B!^%XWfFQ=_K*R}~}eRJh31lIA!S)^1d9Tc701;v2;I@bLOkQ|JRAkyqYo7U?F z;^xjRa?DAsRa*uPjh6;Brb!r!*<9#jBjf5%rDdBT^VgVQ}JITHqZ;b6YM@!Z31URoN`7kr~{Rux)|W z*W5tqYia=NQ?pxnL-JK}d`||^Hcly;4`Gp2?(vYM4`Y1Y4alu@?Y|705#Yndt|yxm z@38_ikeUWAMaA?c!t3y=+1c6{6G_Wt1@cdEG(@7Q7do4CJw19->EI-}z?y6CNl*{| zbemWsTUE8gE&l+8a^4F;6X!~h7}U9wa7JUM;yUiQ)8IvC(KsB8ypqcBv=NA)O%5{! zP`{3Vvl1IbekM1NlLNJ~cz{9)VL zHQTMfjm31jw5Q2PE026!jJC%L;tj=-V<0@8$R_q%pI+Y@msMP_k}U7GGomvM`{0-s zSnk3=e@uSfrvAM;nl=5JwhbAtp_eC?OfRRO87>s2#(533Vyj_x^zB{CWKp?Hh-Tv| zBgJDy9xfbjjSuXWn`x1l4b1H-4R6z}c}=_CTj%->xHI|kL(0a}#S=l}R+3W1MyFeC zHam3awb@xuB)1@tVCCY7a$;9|2^uFP8->x&eWTL-YTKR#0GRy7Y?(5BD|ig!Ycl9a zQ@d6cI@P^tAxL*8n>_d_3`lhY%*+MLD6nn6)XUbg*I2Z%qSJ}ucwxq_S0>pT<8Z3c z$8e&+?;C*W(y`sT{kqqKLdUQJpqn$?k2I17 zjU$dWfUp4;%tL6#`rf)VYHOBDV3>JXQ_l&N(H$ec=KyY0A2-FUKRW2yMFfTB{{YBl zWGqu4J|aL2L1GX805fP8upNCVQnjsHl8Wg$SaCC97`SOHN=Pptx{!5~#+r-#Yf9^O zSz-u-k>!pQ*%9I=hEOAp9ov|aZX_$CE{osrsJ6PwtmI{iav8Zv5*QX7f(&emwv62S zTmyYT>JF8SsZ`_;M0vPzK@KD{5>eTbMg_#1Mc+boZ_cwy&CCp%Iq-8r#9^9rnLmA; z4WR+D>ZBki+igXTgRNzk^|d7K&=&0Oq9Z- z$9QsA#UTufwb*>Z<4~uy!KikW9ZP8Aj~Y1J&dnLu#MVESnqIJPJQM)5Kuf={bBU1V zbT?#(Az-NCiwoI(ru#{)8o=bSf=*3DjIFU*Zd9tXoh%gGbsn9CbK12kArFr6yiXMH zmyRK6w6X(kpofH_XHsHO?KIdKb7myy&20eb`~X&BV)&pB9kGN-L65` zakoXaOX3DX_>Yv^VRqb#UO52W<=xdR#9014Xroo+T<|tF9z##{3fA5NNgJC+$EMPK zG^w`55XT36u3NDBUP>_1!fz0QO|YXduw@-J9ery}KDBrg1bkM87DSk1hEXYJQUhG* zBe%Bw?_CP=Pb4`pN0TISE3?ZaW6EN@Ya4${Zm?}SkyY9_2qTVnmRI^wxFBVh20^(5 zY%L*DNx!J?R+p#^9HJ=XR*;pG_OYa35Q!9qM=HSGJ!*So5N0-W7%*7_r$VxB1gjDKH!6M=%CscP>>WQJ zjf~OcMH9p_+&(@u#~qmv_VY#_><>$Uew3|W01J)GOCOgZ*U5w=0%;>vjS*Rhz0bRK z`&iUJuOTc$?mR51;3UYiE3$dfm%!>pk&ze;gm?ZlJso-EI~F*(Tz*mCdt@N}$YPUt zlp|{LZo1qqx^=F7m2repXr%jxjKpbi+sz_8g_dc8uZ_UfO@a21H2C$c{ zI4Nl4jWRLZi%u1zC*i3(SdrVPr?U5aU=aCuxVXr2VIgCP6-0OPolS{GQPBDxl<9W= z02jzLU0-s-meE9XD!7H|bR9DK0QFCP*YKGr3J^_JbcmOE<}?Pc}x(aHsb3Y{luL>1Epxz4U@@rkAZXlW|YvhbJl4U?6!6jU9@W*hi1tx{W$kUt#3uVH|E>nt7kf{{T-Q z{nc}}Ie__Hwp(ihT-URXawN-md2E3yx-%>nvdoQQq#tMmb=SRfsZJjyCP^nDCT@Jk z!Qsb@muTI(vyDyryLYX2SwA4kFozc+c}y)7Zl2{(0+2csW7J>Pof>F{i#U0>VdEf} zF4-dg0BmdJ48(!~T}Hj>yF8>(b%PYs!rAjnV~%&ofP=O-vhHBLece0WvZBPA)~)29 zF_ntPVY5*bseQuTNmj2`zh!p68ucMl0lB1Q4syuEEy#|^}UE1TvTk@?U#eEO>lRb z(XX{vXkMb-D6qLT?^S zA?@V^`4rfQ_Me*dovEM1YR0ENY>bhQlZzZ%G5~p_QR8HG9^r46-wS^_>D21hUQwm} zOb$cKuO=fs`9YcNnPZ9Blro#6DEYmk-BP}~N_jIioF5}BJoXfvQ$>xE z71tf6QqjdPjO}B$pxdwb)@daD4YfG2qx-*~$mDV0z%vh{jDsRfcE;jB42@xdOtrM&h0aIg-G!6Agaui%ZM!-e7e0^yrfwUWslb4TxSz!zjfh?{F7b9+_&9vXA zYR>w5KVVo584WubGT~H&X)Ic9E!M}OJw9s6*?8osGyJ|zMDy8Ek`+4wTElN+=q+38 zqFk~W%zVj)HiHEeo1#Z1mywj+nBM13)n6R)E(0@h$1?;2$hh-Juj7^d;FQws{W>1K zXsxStBadMGlKxC328H{cfBelrey+aao>uqag_8pV0 zxdvMDubK3@aL14T0B<4$@d&^mTn)qilknECSYl;1Y|V=rq!{l6F$ISl$iTAfTV2?T z7HvtlPL;eXWS$BMT5qZ%MPCU*bYKBv`hgcVTIht91V0)kX`SYe%{hPfNcQjRyYR65 zDt0&EK>2Tn3mbycHTGYjYy8*fe=63pz*sqwM~VBW-`BMo;m)9M9fIDS>bM%gXN4Ch znJyU+h{P!>#VSasq-!UNLP*zX&}&)QB!)?alZA}}A|l3RVf!ql*5Hr>d_}taYa8o! z%z|akT+b#kQor`w_hW2Panq+=g*(?OO0NS2$y|%A+BoSac*7n=zOb<68s>+a--ZUx&?R_n;>F-n1$x>Ki z&6Ae?HmyEU2(`Z565v_gxLfHcf`s?l4N@=m?*vMb+x-5wOcn;bIK_M zG??n=9xNq_P=$PZi!dXwYirX{(z*WtD=C}{$vy|yVl<3hx3LU`!3(0_PN&<_m8zK3 zgyiABHn6lv&}ZT+G;`y*C<)bu=hyHD{3^BEraUpQeAx2gS)`N5R>7lJbzscG*R}eF z>!meXsDf`C8Pixx6GOE_m#0d7+rbjWCFU$q%v8*SNE2 z#XUQU=e2D)DF$bA6D&!RFD4{NuK2gutzq*K*xR6}*Q+t=IV!NZx#!6>m;V54k6!n!v{j{+O9D9AH;#DYW=U8oHpBBT zVb`T?*>DhF@tHiN=0{{P$dUnKY`~iUdK-Rq&3$T0t&Vx=F)?5-kr;T;DhmRn>u@YD zVAZCoxr(x_5C;Zs6mmve9!RqtkL^Pjl4VqDY-9RGjqYmxCezLc_8x9G?k+_a>UY7s z6BWP#h4loTP>$ZcDJxQnM$tSUYjN)sL&YIq9kHfnJ3|0Tc8ngry42h3T6yFW2*u&i zV#Ek1Sz{oD1V#}EC5pAir1h+?w~%QC$?RCC^3)?lmn))Bx?? zhr(IsMR$%gRWYZ0a{ar=kiw=KG9>LJ$qLh z-&En3RfC>mhR%V3niXt`RD_JMUl+KG?O)~VRjX}Z1iT0FXpwQ4aOPsg9B}Svor137 zz^{~F-KFiR_}3QZ*2zzjiQfwg9s?d)xmMisDV1C_b^%#P)HU=bm(OPK2+u)-o5}J= z4;D9{6tj37?l7v6eav*e-uJHOby~~hQIlgX1aLr@%Ob_G1~8fyF{5r4VQZ6pPvu@) z%a)|jq2&JB;_)$jxN*kmYdAprS8jxrzN5W$>H8M5{F$Ar=wov5n;$D{Fk$*^4XxPR z*QBo~mP?C?nUNun7B`*lHzEtzUe`XAo%U9_cnYTYG_ql5@z{~$h-7K<0sYgdjE#0L zao1l;^Oe=@*ljdamF7Y;j>N=UYQ)Sp?_GK}rF{)_{u~34{x=tr$eB!`k{1?dAU(eW zdx2Q&y;21xhZBp$#fV3csPhosRxBF8>LhCt8o6(F#~wt1*BALwTpXiZkxkQo~)$2T$>; zs+TMqBZn?Eka*dEDkPALD}_A(wvG8wWc&(DwkH8DT+-xXrsxrOlFKKIY0=nP$F+J^ z-m0>5s>x*s3yBO#la-L+KxZ+4g@L!U-sf~+{*zc+?Af@gDOc2*3`{h{SraZCm!2~r zc!MjIvG$_$4uoG{!ql&9}x z5l^DCErrJ7g}tZN)mj`btQk_R{{U~jfJca0B89E1XpFbotKW5XDv~JjvKmE5h2A!D zp%GYs!p_8iO95}npGX`qbvZrzn=P=A$aRDuFQMjtfxikt;0B^5*j`yjmbx|dD zkXFV>nm1M4?#FOoJYGX`RYmjz<4?4bPSEl*%O@k3l{6Zo9J010)B$p12X@O3@u{`r z2&L*rnSjy9A&N!FeI=GhU))_U>;!^UuYZ>GR?_ouVjXnuC8z=d~mgFEBHNn2fJ63*)%W6omoe`?Jezb(zL$RfmF6mHhqFjg^EzOY2+7? zZr8a0{MRPLsIF^m$#7G0Tol->tpYS?hym$#Dtf4rpb0Z9h&f_*z)y!f6=k{pPd zA-n3b|%Q? z9Bzjt8CPNYeX2FE+(RiBus*ulv076qNidril6ck(2*?Fw+X{IUmFm|Q`C83tyV2E8 zkW$V60QUL@!q3c_cqCUCjF7C6l~!W+Dxi;;jeiQ?>MJReYSp9%_tJ7135q_6lt;Mv z6mHi*Mc1&<3hJ?Rt31;y9(K=yHjJ~h%V?hIzQ+4*dSBMBSgcP3T-^B?vZON40#0CW zr(Yq2fpfWjW1+QA*w&xwbF|+CbBv61Wu0CLNZUG0jUJngy^H{0bT?Y&XpXH1ODV>V zJd9~tOi4|7~Bq{<`6)CDLF$R&r$53NmY1C~t;<`mV8k_G*}t=tQ;k6(pLvzg!%2!FU-z&w(8 zC)&R<>QrdJ+t&IT)BKIE6M~(Jc3fuU5h9soEKHAKxFZ4bmj|z{s`XkLY=YMg=?X@q zkQs}%gx!txx212g{j_T$6JZCwM9CD0lftk&w zk9oRA?R6?|@4IPZs2%DZaB?$LQ>EosRul~~z3VoSj0 zDU_Habv9t#3jPPZZ)&M#Xna+lE0FrR&yi5G$pW$Ry_Zr5{Z|*bp|p_G$-3b=9w#$^ zjwg3k1Q>w>*`c}IEJ0!g_3K#tof|h+O+egMY_evw3=&>FO8c3CC`h)_N5-bL?B>Ky zLOI39gBj6eF|=;NDD2X0g5dn)yPlv8D?i7H9 zsCmrPV~r$UNS?-C#8~QXbkd^Q7lBAumO04_FTFwB5Ne?MZnp1_aoV$O*OACBY(zS= z9CIY|F;A#F%CXzD4SplNYp&1B21<{e6k-ONH=YFW&zRBfXsxcux(g2XqRmcIAg#>h zF!7{}$tV1bh4e?tD z!b4a`S(%x07r;=j=5-k}?FqW)b(^Mw#PzDBat)lv4iZH&&l~0B21!HvgBEaoj5=+$ z(hWR3h`8hDk+Gmdp7}7MSVJ1v`4o%Bx?C--QF;}C?njwNki&{4cp`1F%Mm+am5XVw z^y;@=4_a2EZ`dTs{nZ{E$f+tcGQ{j72`e~?Hz13zM(cSGTbkQmIN(gi7&5L%SD)$R z2@s7~sZ(;rO5W-#vQZ|DC4vlmcM=v>7m@;YmyGMRho;`O%l*KNu3kua+BndZ8@y_I zC_ds8S7KNZFCB+IPm(~sJa{&lo&n@OSKQ*!I)(^9zLqut@1-YLLXuo)V~DC_s>l#*UH31jzTeHg z#G1+9+^Gc1=F&Hjanz<&^^*IUokf{$IDR%)5KaRmg%_L$Qt8$BpYq*YDq6Bh$wQiaH3>}R5>0J?X_b7 z22DvP{{U@tQj8=R=RqbHm=P4xx9+ko)Lr+u+0*46y4Cf}0auKY@)-s>C6-N|=%pP3 zt$;fZL2FvwD(`NJL};+S+2f(d$XN1-o;x(t$}FPY3nlyC-CVc(Eyh1$x}cTC;qlH( z%`wZ00kJXUB~UYsSde|^O*>SrmyR+%0sPo`ym*i4{*vox+C9p;{+*+sVcgc4Pmvj( zcN#nyqfBW`v7c?sV~pSHmed4>Ev< zHU`-w>vNH!20d@4)2FRNZD6M4?rv8y3@BxoM!`U5oyadEJ6&!yZMM(~YO{z03RG+} zcs50qc8O4v?gw4N)b^zPJqvZjgvz+t2?Sq7wqnBs#N%CX3emu65;yX4+%FV$+3Z;>#b zPG*^Wi8ySOk^JS@7~|;4Vm@KFLGcvQ2V&C#F^P`9vm4~O*!DIXzz5%ZwaxSug_Dx% z%BeDQrY^YfZN^q)S>hM8wl-T|PfxaB`VQr*-6+1PvM$`mxoSHNd<;gTdD{2=7 zSgzI4naR)vwu8Mxr=upMbLW_3-MDOdFDH;(kb3HF2I>_tg4%0=CK1RhorfYM>U9#3 zs_1lUHQT37m47N&WcUo17F>rh9Dt%*h{o5rBElJ?#k9eOQgYt9FjI!;G@#AD;WAhYoxP@-j8?5_q zO+qrbxVb!Yg^Qk5o$nu*Z(_^(cUUqh8twI|*So9W8Vkt#b}Viq>A2#VDH826&86&p z%*;>6OIANKwdIu2ojBP{B^cPwrCZ0jvGNhIvH%j}cw2G=a!%(xZKbYjY9z9X zX*5X+;t8#g?C}LY`54B6{@dx;^}q3~tungc$_$c&lPhFOi#`N0Y%#eTh&L*WwC?TH zSADMwulEqyv*NPh#^S?b;;sY}x48n?xC2&pxhD1H?^d<4`xdx6UPdWgM$%X2kc?`OxVZ0=`^mA%agFq^-eskckx%+68~{w@SXv@`)jvJ_h52c+x667A&A` zCuM;o-@Wv$6<;iJQ_CttEN2{q0B&H~gCXuz^{rBskvtZkZp|)6YRQ)yO$vexmI}M< zb^v?Xt@&1a5cV{+haMxNWS%gBHjl@$<$74( zUs~$EnzrW#DV#qr*&;F|UnFg5p(;9_t}pyH-{Vi>g&qP&#EXd;?zz)Vi-|m=>eL02 zF?A$JHk0tN{(4pQaHL*Nc|J#sMTq?=M2&=NIsmura0kr2$=%ko)2h#wJ1|)zl35-U zl;iIJN`^hw2ccH>vaPz@)|gq20IbYbj!}m+C{_{|BOqLvH2H(|1gGh@#=9$Y@=s97 zGAG=aSTpY9THBpH&$09_K?rVud#oumo5+c>c!!2uj2x`PG?6IVCeqN!7&lWBFww4h z8dljHA;H8yZ(tnqrcoq=MaGe=(>ogr72F2j)qN=Wn?ODm%t$AJq;#HOq(hA#nWj)k zWm!((yKE0j5lVXw2(qQ)-wrIuWJx7EV#&gkc-R|X$!?odKq#$Ra0htPWoAc_E?!H? zD#>BvcJeu4qu2{v4`|czqhwYFkZa~iGQ%0d4J;6}QoIrv#=rnpPnd=V;eqy>_N?4; zFjUXto+g_k78s$3fSB8#%OZnqsVUuN16vWUwEjCkB$YDG(q+jgV$ic68!z;OpgjSw z_*UwwGsu~F#b<^dH<@ADmx>)hm3n)1w(o(iUAnNxQvU#s^pBWZignL*qxIHNN5>g$QQ$;k8n4(5g zDBI$2tQImz+_ImE{Z)-zKXRZSgvN^odDy{e(1?ZEUA}MJIuBqYRwwWkzTJ|RNlFVg z%WSBNG`oqgf+PT$FYQtk^#a=8tzeYAl_0`ANam9ngUOKWt@P(;V5N8NyA_N#`a!F$ z7@NTpaATW_FZk#bx+RMi3mOt`S!@CPRl4@Ab*oGbQ?~}6i2E-C3mAXNmgVP7H_7dU z0&Wy7_deV8YU=2@IxD3wb5Rad(ZY~oBslQIEV}|ggW-Q|HqDh$Nz8rI7Bq$_^Reza zEKlY?k&khumQn5r=U;Q+Xv@bGE&z!Q%Mg1ZTajVh)TG}gL=t9<$s$~K@r6Qiay`s9Ue{}j zkHBeaan)pemcxvS9CY!{L&`5FkdlSl^)-dmAJclrvuvb6j{>}-3ni8{>Thy@D7p0X z(y7RD5ZnvoGyNM($U>7BiJ2U?$#!9T4*Juq`VCdGIDXIPS7+8^%f7@%90&l2-=drA zuC=|>f5ivJ%T5=B$Z2vh1Bj%hKSLZd;Lwk$qrj#RQ zR(+)`YxlPvW@ku|q+=vz%q<&O=tiEkwXfE)VC@Xoa{1hDY~w0te3?iw8A@$87xwKv zO>+E+<{-(kkC!-;;7?_Ie8|w1J3tOJJ6v}Jes`&^&rmBd@Y5k7iZ_l#1(t6tuM)C> zbSt;5^#oORRpiY%3Osij@WbWH5N#Gzgck%T`39oP@fw=XyB|`nTnMoj$Sh}=mBwW{ zZ8q27M@t^HqO)RZ1MoPqvW0xMiU%9~(JGQ!)+1>*xcn+@u_2=JIPmdN8Zh!SySKU8 z04Mc+CfC-ndz;6Ck|3KGE^M}F zNec}{fFC*5x*n>(*~?sW4?__M^ELAbX9vZoPB-X%!?{voYcl98j#`e|gjO z62!H|@3{0rOR7#h#29UOKsOdD z2_$v+d}*X6pl&)mtckRdQVE=Sp5nu~Ha%g_-0IJ%mOSd%eM~Y}HcG1HqF9E|Mpb7$n~;QIf@k+k+%#`uNoD zOPbb@*)jtre9a6$PK644avCMOkaSY5rr;D@)%6%o4n{c2hs!tYg>+p{xVW%FHL*UX zvb4J60E6ElaB?QfWqDC==HKFGEwgIvxNG0k3Y6PnFbj#vcuDvydo=Axw6AEyWqg)>!??_N6 z0^6)Ft*xoGS7Z=WX4w!=+oT@zUpjUGg?s1lcwJKY<1W+0u$-rvHrwG@03D!suLQKg9;HR>tSws!ou22(?kk(HIQUBW26raN4#FID$gYg+6{EOH(T zE-F;Wno=V~bsJ&`No~ZNegd$%gfv`##&YImh9wCeMwwxlS&giXbMo7z@2y2Ft%8Qg z;-dhxEYZgufgly~8`|3m)Qk1Lw5tmbB7kXeUxZeYSma?S{kdjTF`fR`xl{9Y>w3{P z`57d_EVlik5x}uXy(}!M524rAsadDMNmU9<8+{v2zzrc}C-nTr-M1PWPbArt?Zon6 zIf73!Oyn@WtABNc`rfzsYvhoz>Z5F-HyI)GJy1a@*;>3n!l1TCd5!qF) zcN8pc3!QGQ(0W!)wcu!t$0;1o9AnrYZ<_xAD7Avz>upYknn|pbSLWfz=dc6 z`B+}owFyrwAcGQI)S4eO>Yt4*xD+Bw;%>R zEJx>Axf(%loFtd)Ofkz8cOK9IUrR5bze>d?`;{czeAvz;kH}#LH<3#yI>t1OeK(Wd zv|i#&mkr`bgmJdkP|iaOZ3=Z*&F}99;<35};)9fwI0_c<0NGC6E+T=OR+H3A zBoO94FDR>Rtm&%|eZJpoYtYl{HIkAn=9U=aj~+H?<&i;>H3SwPsg9s)@vPEza#jk5 zL0q!Y+~ z0gdsWWQwwA8O8KlUG@C!P}DNi2g2!r$A~17&mm}|41loRs<7*QzOc!ptwWLD%N2_9H3C@6SdufRA)DpxB{U#)E&&bJ0lx{{R|vr;(81ay*oo z0t9xHDPZ`}X&4{WTv)c@LrEgL7RwG6O2>_n3whyTA!Tm~+=Hr-qOtyyrDxj6BLl~i zJksO|ktN8H{{UiF06xK{@Qb4X+?{GHy$NIIOEV&>Mv{WUz$xweI^D1F6jlI^T>ROw z+ZEz?GGKOZ6oha08~bJbUZ>WJYjezm6ugfY4;{;h60{uR@v z?yuN6V{sf;B?cFZlFJcqCgH>$&Mo`4k_rnhqQd9 z0AYTeZfgr!6w(_nhx>jemUNC7?gia0i~;}(sIzE$+LGOG26jlUXg}>X#-b4)?#7$? z#0}Nj{{XA72CKK03xG$&pCOwqmC*^>ySH81-knCDl~b~aMr{;%INYvOzAdW`A-2*Q z+qKY@I@a~ID!s|ea2S5xK3L(#cJZ;=(muPGTGqC@)^BqC%7Vr4@ne)=J3%C@+uVU? zEP#+(&~4LbI-a$cdqk4Uj68g(U|fl%y2=9xN`V-#Hg~aynsuHi+F4dL zc2zAHvz&=f&NubJdhHTOxUr>ngoTv{gp`v zt+WTPtxUc=0mF=}P-l}GCdW2bl0u-_wNYlc9R&-}O@+Y!08pz2W3P!f2;uGS_b%pN zQr#+hctSkN9OR1&8VT;o9@3(guou^Rl2`H->)M^IDCaxmxf!Gb5ttK(*2e?@!3n*K z0q?hK^s1`z#98s#F!+wr(@PbYOB&sFzNR-*=tW_=tfa{%$(C$)#TdYoyT>43bYYI6 z*2i%F0H(2}Va$~>R%T+%xWXADmNbkIC2_p$C*>e}wt8N=t90DRpavPTBiNCb$7sot zDFGc$gtIsDt?|hrMb17y9 zd>Kw#%;icpnnz&1l&Yc4ls`!FI#(cS369RvWX1`B8SHmQxQEGQ&8CF5wXDa3IQ1s_ z9IPk;!^&huAI)J5V_+JRL}6P_`c%l^X2|Dx2HB6z!IGhO232Q5r0qQ<+`qzw0Stm( zZ#|Yg9!C-5WFjQbj%4w(j_(|XHjj5t#-C7#`Al;X)2JeowIWSk#R<~{abijsY3 z8O}cw6u?c#q?lO*7MCXd*3AXg4c+EVY$;Hw_r{bAtB+?6_l)f6HY{ERtNlGy>yot*iGn zs?+LiT|TC-6O6@$3Sr|UG1|f1L1I5UnzdS^b*&)fjl>}g#73i3KMHbO5lIWj7n{fg zMA*9!tND{*ORz#S`9F63r;jtI*TC+5ui*_LYj!0AZu}~tlPIj8?mx0~7{@Ho0(uuo zA!~jmS5J){U!XRDA^T&COyuOa>5Q?)tPDHEh}*@kvM#In)a*^x46m+u8!BA5XDJ(6 zLY^=jo#jc_Z&7_UHOAB8#w{|H@ur&}Bgc|5r?{2z!Dg1<)zZX)eJ@qnFJVF4P|DER z30KzFU!{k7H31#RPk><;;~Dc{WC>U6FdoR1FE}eMPHVRq_Z2HVmwjzZWJ+ zmO?y?%u6#3G_dYF)m5d*Fcaa-;&uoO?IfPoW)`s;T&dRD=xQw0pXfJOEV0ufJXvLJ z$b-hO8y%Nobzl#v(y+WpB+JK-8#yNH3^Q2Ef7*}Ty#Z@*pPp#^P^74 zkZ2Yj8<lzoy|LgS5RO!2WU>NYSmbTaMfZyh+fV8Y zPvuVaaV(_pag&fC#Fhh&n9rDOTo!Pwrs~9>ln%O6tH_W9@+_>)KI?l`CAbQwZ&0Gw z-ENh)EJt|ZG8kjz##vA#tYTXbiZAn@UzpN|;9*CRhaHdAgq8&YAdw+SLYr*>gQf4T zl+{EFmmX8HV&yN17Dh%yuv7@8*+sM`Y1>U#B4D{V{BAM{1_BX0VeyXlJB(jF^}f2U zqvKEW^$8Ek$(eG}OurH1@{>s+v&{*TJEN+e+egdX14(ILxHe%OW)tp?F<`_irTlDH z^$XvxTJDq~LNX_l&$X2llF!fuJ$h4ZAc9OB>G7UK!)vtKNG+v@ZGAmzZ%O1NWGyV= zZR7-Y*5kM3Lr{RU#g9GMxtrJlTUkNaJujdl-RqvtzJ-#=ljOWIykX-&KXnPz-{#xc zX>BQ2f@HJg^TEi1SaTFk01vbh0;fP!+f#1UhPn<(8<3MCSR@;sFoZX>YAkM{82Kk~NUi;kWsHZ)SKBWPA@?CLii zdj9|#mVq)g%_`~AHrZpbw;_>0AO<(K?)R+KYmk$vv&rPKOrA`%c+NNky~n5(Y1MPc z_%1k}2N7}GH#TV_GCzt2OKjeKrP;qw4BZy8*}8CnKt3iP9gUVsWVeg`w?|dE)T#D^ z-?ya~Zpa{)E@-36wleL20HqY%h94=v>LlEno~{KW$;I$1aSZ*1%i=tWA0)p zQuVJas1B3t{H$DgW|NUg1S~$CF}>*JP_rWyH(s{CPV_y?z@22KY1#~UG7PQc$!QPM z-tnrBZHYbaZEJ3+lEN`%2mR8ep*z+`Hn(N~4xp2J_N1y(4uo;563v$qU`GAUP1{bRrRhDs2}O4)iwejkC6Qi6K%s2@ z&^}hatMN6h9tvoZEP){gD@2|*tX!uHjBsWlzk&4hwuhad$>JVG=KWijcwnBQr?VcM$J zk;VaeUGifhN`eC;5sx4va<6bo_BQ;fRX}(L97iIqvJBVT4!%EWEQ9q)t@@s$wQ2I# zh$Rp&)MQLyibN&@wmHBWs|%4~slRK}ZV=NRHIE^q!=Dy4!H9_iol8l3Zr0uHdUdpB zc?rpA*lw|i*389y>`m2mEL0KItOtG>3&Vx`v zxFv^w{A)>C7`=g;1bq9zeqGnN*N`G1DBJJlEOa=q}P#|);;D+dsA`T!4&(59cnJqz;e!@$P(o;O_pRuzmcBG z3u|(E_w=cCNYx=^OB8cH%vEjbH%N_iB#UW&w9;)%igFvpv@k4L7>gR@x%a}#QKMT} zld0=!&dipD7?wj8OPIu}jADoS0Vc-np*39KL*TYtnGFVEKm={RQg^B=YTa}<9jh&k zcm=^MIZD!`7-wfYFypBV}SWLmAv(ze|efTOmW_mWep2L!!lv0g;)RQxnHz zV%?*Z8;2k2rLwZQCxX>7(hMmMJhRL(itctOq7cn%Fdpqsw{X(AUbk-r$U~TUj86np zJVp@GWXl>Q?4xl~q^;}*>x0s>*H=fxjKxe^Nr#JWL?pJwZ)&post$wjuU5Fr!!tU5 zL6OqPqrjVTVm|2P525j=MA|(M#+t0;MDRll}C9T<(oD$>W@YQD;IB)WuhSTJJ35;hRL zgtAX8goC@>Z*GiVwX~?F`&s)A5t^4CPb_IWd1Y1u!}5lZo|~7Y>$;a-2y8DGm2)z~ zkqXTiXH$w)M;K@Jxl#dO-q3e-y-lcvC5|ll`B1zt;66+-AT1o|(dNGDD1*;3Kl^IkG3QOzNS2UqGX6`}L~f z9s2dbam@1PiQ|lz(4^VYKZA|M*3UB!nZMGD?lqq*(#^q-z?@-XWIXX?N6ARWOw6p6 zUDA$g+bb&6-%@ zmmOP+%7}-C9EL}Y+;!O~)42s|VHF@TJo!1h%g4p@NVbYFsIkl&L$%x5+lHE-;Z*VZ z60%Jk{ElWsrz06Ajz#);rX)&=dTuNFy$JQEj{vepoKnFlf+(fpBw=zf^4>V+BSJ!j zDz_T^C~Or%-v=NljB}id>>}8vWp_d~4Rd>_{;S%Wvh){UbEb=siZylQ46|GrQ!O^E z%sLY3{@bYT4ZUe#tex^LkC1U^#uTp)H@cDPs@GL!EyOR9kN>|KKfu{#&RduvD>14EJYPfiP;q|%>CWT#-|tQxQGcL zFkzdJY;1MX6+eaQx}s&WrhX%jpFN<>lOvYSk6fAaOok-fE(Bl!2I2iRQyd8-Ll#TR z9C+A8a^j3DLCCOQ0g(wVwuC7TgWGXodQEzbGFfuDrc)$bba5d!iDi+C?EOgp0H=HY zpVRA0_a0eK9uEsPW4IV&9Fb0e+Wa5n*5-%naT zSBW9igycnuj|_O&tdoWkiC7ymgKH=nf%xC}RmW~vkXYq8X*n43aw2gSI0*|#LK_oq zjj1EHn$qZ!!!2i$82OB>u0f!Xmr~x=azk4BDuZxrX+23+Q7z=Z@Nzh~(qp6+Y=(`> zAOzVO`*$0Qo9lj+ife`lH!V3CKwCN53mJ;4_|G+k%XCK zpfaAmKXVn+us*e2o30Q*PDI$ti3c5o%&1YMl5j!=SiSDnCw1(-f0YYU@(dJx%#$aY zMOl_YrdN@6&Z^ef_W&!YQ)~X3FQ!nWtIy=+pOC{4A{1g5#H5g<9W5`++I8($uT4_M z7@IDJUyOM1LaYVs%2#RHb-w1lsC3gqT-T*$SyB=?NL_|DUO;`$PCKe?vvdP^=(p?J z)|#(n31Ftt7~`<=U3D;HhAim|GQ6@5{!L1S>Tz*axC5xi;&NV`3?I!uMqin zwznz`+i$|IyIOn%BQY%8ejYW_XUL8=Uo?+mWjE+l5Ju0Ke0mz$D_Q=cSRjv+hFF{G ziA8~#WFYiX4!}sUF4wl20oJtmqk<$i3yXqOIX-8Yw3mw*5QA;NHh!nl-wX7t_TLbO zb;wE;57lDI>lqQm9m#(brKNUeArOMirl4Gn zdm4*dtCmtl_GjAIQn19EHDZZB?odFdX7B*=ki@yUx8qn}d#k|uqOMP|^Q4o{jmRv% z4IN690qjFEb=c5;1|V$&oi2NyTU4!ZHeT_oK5iMt#K$sO zqc>>)5xN35Z$G83ZncH&4tWuxwS9^6fNBW1+-4K2 zOBi_}VY$ttO6}E;KMP?67H1RxvZ0|V31mhHm^qEq@lno93 z9qTHjn9fFIM&Y{R8kUm}3xfQdN@=Ha2Oj!}&8B#+WM!{4KH#sK9{XU<< zuBkV`Kr}pW7c|kv8fl3MyCee9?{T>MJ*{i|Z+lkV?fM8d738)U{;nZnQaK%#%fGB= zXs{Qyy(=dY0T_I4WZ5Zc{3Te8pEQ0)0G|kAKtpeJx>Ri0RECguFTmhb`=yyQsicvREE#DB?l4 z9azStWmzL9$JWX>evmqoS*kGvT!jdX0Jh!-DSe;I{w?zVtsd*d{WpH^J zU+g?9ksZJ7=dm_!rAI|x=89}5sY#HL;N>hR8hImO8wTh~`?nzKx9wV~vJ-GyFDHkd zRy>SfY+G6O*#`AGU#<51D-Vs)U?xidpg>>02;UnM9!-HhqalkJ7?hUwxN^YRl;2*2 zR9?NJLP+Q5W%@}3!p|uE;9Y@JBPL9*WGyNYu}~Y_4y1~|j{Jk0iq;)rHOeaRicWdrpF1Z`U$ zr|_ndt|l2wpB{0Ika5*a(y3OE{MXXg7S~V4q9sWrxpR2S=Rne`M0Vr5*xg0IZJiFi zsI5y}8KwG;LTLh$qBzNB>OF5`@z%QWR0QiZ*m&OQe5otB+$_Yo7A3E(`+-H5W>0`z zd1U%vWqq(DgWPYe{vQi#P1Ie>{0!ka5=kIwBi-b^?ucxE{BP4?T-zvVS0s7-j(W36 z6s3qOye^gmkfDQo%6fh@_3MJHuv)H1BNrZKlJB@IfIeS-GXDVT?@INDf{@M1W#Z+1JFGbox?V-l-1cQUjo*bnsisZ24+oFW z5Qx#zW>Q6kiz)Bu!%JGSwOR`zZ}{wZ6Zd2z$SjBm7GbTL{qN9JOptLFHbzuRtlHag zL;&mnTmZ+vuC=8XgGx|Y(PT>uNRk|RVp43DDjl^J{HtohM!o?SWsVy=Z88#2s5jm^ z5%?d~N>r01*x3x&fX0`VkMBCLan{Fa_?jEZO4tsDXZl@@tf_T-jTi&*^r_@&$}6(5 zu;iWAe8vg@NYoMmHrjpNeZRt-v}E8D8M3fmY_qgp^ z*6BQ$*y(YxS}4NDHY|r#+M!6@sR2#FQK;QhYi3Git~i4dEr_xCihytKI(2LQlA}t- z8_PANR27+<7HJD(M!~=_?IPiho67d8Ns(sJTLQK`o6|i>HhdQALNzd;T>R^fap_gdDiax!P3)(2z7bldY_N6)=#jbp|TU zH?f2`_5tk7Lq-7_18>fzf2lY*&3vW6Kk>^Sj%kJ{up8x(R^+PsSb^?6Yf2=ZNNt{L zG~9+vp=3ZN49@J<1n<{#Ue)ZSRK18{A6d#G;?A>_`dbVc0o$`-z2mpXzpX|j5)yM6 zUsU;xDSU@^X$*sMUO;@Cmrt7a(wbO-GHyR2AkmzrEfR)Hs)Eb7ev#K}oef3lj0EJf z@?qxWdFF_@i4=VtzQWA53I>+ky?!-?yA{C)Bb$nH1QEj=b2FD+jj$Xaqc!-oqgB#fIHU7vS7V_CngC_Y&pJ8Q6nziZHUYWvlV4K zLV;ihQ&DS93W4$E$McrVK2o3=%$rpilxm48Zj*oGp{y;&27@rC!~NWtV`&2^5)JBd zqZ;gyHia$}k#qcN9eqb9aPo0WjgFZPex^p*k0V(cR4wmU*>%wVqtf*bt*!v)D>f&H zL-p6jmclE?)s)#oGkm*$@p>y=(q1HPtjq6U-OMw)z2CzykcG@kM$UwC9@VYof5udb9UOUTNuPbN8~one6@5wS?X7H=iJ%F3Fd z-ErIssxGgb3FPOB;c_7%n?2RlKyE2C&l_!cgoR5a zOSt=D8@-_X&f0-Vq_H547uj%qZz(={s=hQq6gx7>FPHS)#fP#D!nBZ~h*qBmALg+u=m0ajIINA@wis2LPMaN@g zz7ag2Gc2WdoLPnnL94aq`_Y ztrCPo0LjP5lf@Z^Qp|R^4qXU8sf&^?`BOqV%vhX0J}e8BvuSu{SJ>rrGDKr4%kdWc z=uaTXV&orO+^6F=>BC=25-HneNgahN7#qZm$jl1A!N1*=zQrn2dz>gapIMj+hG1th`tv>g&-mrnJpS9^wa=8B7k5S{v1+sr7^h5 zIn_iwjEN%SWR`LYZP-)=DiJ^nwEV#O-kYq6SRG@J=%17-@?^||b0H<9yIL?>$`waV z+jOJYJ;3J5hchqfGdHaEKTJa(sYSNoB9siHV%EL(D&gXCR*3gL9?XfWVO$8sJlZJ8>|lFzXrWRQTpbv6e;Yd2*gc?*Y( zk_;AT-40ZM_)<$EST?&Pxde`el4+80m4TCyED4cz$z57|n2NFxExEpB+etXcNJJbT z4<2ioppeWMDZ2(oAQDKoU_Vv$H2d3t6q#`1$|Hge)9kw0nInq&2H1Xb*Xvm-q_Psj zFu43wbjp>cEg4(ODK3vMWQrr`y3r2!O8^1MeZxG^P9(w)j}y9sG=VpDTSkC<%_q(1 zE2mu&LQKqZkBnAXaM7`Fa-=ZgK*W{^mS#s|uc-e38rrp&B(~XIjg*o?&g8aC=VB#* zK%+}r(2l)p95?&7nPQ1);OdjT)A~1 zfDdzTZ{br2dX5d~geMA;c)IOa{N7s5y+ zN6-Zt{KnV0=~~qyLB6sXBv*|tsuV=>KkgR{Z>i|F9Svyf0Pq#X!EO2vl(hH$*^h@9U}m018oGB^<@iE*UQ*{w#@0_=%^Xl3E)XB6u2U{n4p6*4795SJIW-JOrJm2PBQ; zhuw~BZb(uMu5JGSNTKW~wflP_Y%C1Fpm5Si3klFLlVWJz=IE9^2U^2=?9yP4VEdzy zNW!bEj#!x)h!+I(3Upg~ikp3Uv9@Tj^7w}lq>U>;&9wQ2kqFnIV%PZeu1nFOrh+7c ziG`fck-kYyoug}nUfbK$=v&gVt8c+pga;aA$A%Ih?*V3xDR%7!Kz;jf&<~GaTH4k1 z2qzgCJYb38$nazZS4m@F8*2hPT}UAQeJWCEia|f+rF^jyr?>*!?$*(+%m=5Ss`#-Y zk}Q1eNmR`k4pF_Omd|k8u6tVjeiU@ISV_!Wto(e^NjuxltnA?KgL!aR-8EBSEP8ge zbX6-Xax=L(j$~u(XJw2Q3e9cCMj))F;0>%T_|*J0;Fj11TO676kgT#U(Yd#!m*x&X z8`afy8fBLRB8EJyVUHxY5l1U1-5Za0%^~+D>-1i=mc-slK%A!+k;UhTLbUO`Ws5@* zi4+rIxrX51jq0g&WhAu>yoZd;NTSKgm_?2n=wu%4jbWzUL1JuwjdSd3K_TU2Ss1~W zVY_UY;_d7jD{4MnJ63&thXL3!#STj3VC*>v0arj(#q}m8zMFxw3a7R(X|C|d`PWRm z9EmbY<4cl}CRMhG!mIlhG7CxZZT(H_eO7GKWz$ANB$omQ#n&Dtlr*x1Qnt7C4Sx#O z(QZy@a9zclB#yaw$|Z3d!rR8+@sYQ4hU;p__?GgF_xyY2WSu2< zcdQoFxf@733yR9oaxoQyfU6U+u|?@(JNKxz+P)a!!7F2N;Utg7v8*2}LWTdcIVA(OJo=im<2j47>?p9k|vHd#U-;HN(V5L-6!lNb$PnBT9ESqDL z?oh|(APW;}(c!OAG(KBn!x;uU!?354JE^-62q#y4?$F!P z_qB7R?a5K-4}}Ez@_`vemIknn_G>ZSsXcmM@vFU+7DpzJ2O4N0M#adsO27TW$OAw|=K$Dw5#qvOi5ZCuskX#e`NiC6}`*3W*~xh19P*}{3bMHY-dK&T9un`JMTXOHChwU*KMg7?l3q@6 z6U?vVGCnGi8%922r(HJa#CNq#-}MX!EK5P##pdBP1IZ z!4gs$Ib=JLm;zqoRRcq%bXS7YJHz7H5ai1!l@uS_eFByTKy)B~Do)dZr{w9ekrb=R zw^ey14RldrF0HM%17`dxd&UX0Hze3<=?D)h!ma+y(E+)LxZT&M!u0Sz0M8(w78xCa zeu6=#fJAow9j4G;I^gUA$`HM&WV+9eyL$y}qoozhBcRo3gs-tS`ulk3o-=Q7F zQ?4XIFl9{WsU(iT0Na$3#S=hp{+`u^tC>SN&&)Gs$(D-@W=9NT5!-WgE~+nU^&+m7 zagbq{cmPETO1qylH-CPnGI5DmTBTGy$warzYn&OR<)QIi*tiIk!Xq^ z%axH7QRFSYj}3!}-N@0=W!lW3YIhr6hU%~=B*@6+A;OMHWe+rJ229LgX#4F*wtu=5 z9dFa}sj{nKAoAzs9}-Ur&m`7OvLI6wr296IMVR%}0ZD3%p-EqzpCl6G;uw5VWFlj% zj!x~{#n|Y#wYHtry=twL4*}eCn8haJ=9(y?Ndb}Ow2*F%O^WHfHT3rTZPv53UxA`Y zxo$2=j4J1DKw*lk;CQkPg_x~_B$oM)K~S|ehS|m$;pG1AJiaB3+j?R%u~ktU z?pJa_AdBs-nut$=MaJ^-!{muz5;2$l;}>=1WKp!YmR;WM-qHfx3O+d*N6F34gqz6{ z#~jaTOcAKL1eLphN!fbVm8Swk(oQqRIf?~2Q7)jjiyLf6cZR>pSPlNeZn{&dN#}rO ziwz%)$4u;8k2LKVpCcO)6hPB5`xT}vt+XiJ<6gaOtz)t{V@A{M$Yg94mS|TNX;4Wf zI%=x&Ywi4c+qFZ%=xVGZu5U4T&MPY@jqem~wSU&yApCA%5WpTLI9Cw!>md=@D z#ZlxTV1cc45rPM9w(D0UL9WMn7X{cCnk7=CDStqu*>Az!I#MY0Gmva797ty zN(p!v`NErg!5p!(bJq}^|&|uY4woo36k8lem~XY?ij2X2vR_^7F{LY zoUjP~;hF?oT-J+{+CsE>@i}-2>$TK|U_CEdb@V5(r-SZ{yeueRgv!O_bF#y%04qlL z`%RkgN?5h~8qcP3TedI<$8(=>ayimvW-1RERGx5(uO+W!3M{rBw!K}FCbG#Sjywi= zFmOJki&=6pA(4_NU)8!L_MeTq)%GF_DT)ZuE)q{`M(OZ3L#M)_ns9TS%c4s> zYaf)MP*g9=RH#g0WIm z@@F1MWaQ>EJS3|$cSz#{bYwQAuiIUIHKnR1Lz|m4j0XR{rhk3&(gLFd7@70gCz-zg`F+xq? zB+c^KT*o7k8cX{a@LoK4Vzg?6>!2E&?YlMWs*NN|kT~)31_+eQMpUfvW5#SQ@%xy7 zZ|y#`T0dkY37;Lf%qXGU&gI-h$K-al^ZdPQN<6f9x*#kGcrc8{)>xkSL%A3 z`t_`xBtcWh2sX%oMT*04)ZP1`X6y4@TB5D5093AFhA|qQv4+2e4axznuWqKbOR&q% zD?RcP>2W1xX;1yU!r_OE7i2x{DIV*76`iZ>DJLZS9c}$Yyvx73ou`lkB2^QJwS*2w0hCc;#`6q+M`e`!TK2q$m z20*{FI2JMJN6Dt0Yo$YYB{L#$^73-$iwY)reb0=mwCD}ko9Me%=C$n(MdTduvoNw0 zT*a_4yIIRgpi6#LYVsqTT$xrC#f@4bfS(~3XKziXrkZ>z?1r#xe%$0E$YsGum`f~! z&IgPb;|w=$CsDe@58`W&W}&PcXY=naFOQFl!4#6oFVn{$z17GH(x2RYia?=imyqXz zlPjB+ZPHm=%67{|Z^i4aTrVOM_FSIhRO{z-T3OmR9Ec-!V(+6C#-s<89q z8ac+nM~}!HiBRt8bSdfo0G$`ukl?q&iFA0MP!9A9e{W(Bb*_74u#P%LZw$_)BAt>= zB86pUy{)b7 zBN*?p-9kqxc-0r@QTl^_@mpVoYg*axOENRbBN38_(U;sJ2w0}xj1{|uzq?%xb}GP& zek(a-fI=PNnk8QgG7W_t{l&o4i|Q+%Z5;aoEGB8$vR5Wy_idUe7X$T}={_=K$rkape0D?QQPl%z zK~_BvO3z|Y2RWt)mJ^W!wn;AF85hZ@+794N&i;V*>rYw}W_jMy86;7T3jX5X^%G*? ze7pYum2R{ z_eNAhe|is;{5#f>;R%#knJGL?9Bk4%yD`(+6m>T5xLfe9ny4lN@R5}jgsQ6yTSOpg z>e{($p1RgHa^R(tpRR0Bd``YOoC5L-u+!nLhhN5*PTYgQY<#4W@zO3j5b5p(hL;EB zxb^FES-L|>v3MFepE=M=tibL~z}n`-lj;SjSw{g3yM}3_v@Yi)s*@NRT}jtzTL3;a z&+$%H4Ir$~hGl)N4~{uK?8iee(`YCB0Ik(wB3fmChE~b|038YO*{!vgQ+w%Q=~~rb znGRWCv{RRje1NJ)s5{Pt+iQ*QMdG%kEsUxAThkC?8 zNGeubm0ijPDPmq0x-^KrEZsWRD*^hFXYD9g*a#tGiEVaKuA}7}dVe}8SS~Ro9#1QT ztgnv`iWLlyMBefN(35>WV|w1Y*%AjN(qp4WlHOc-fl|Xycma;T)CRV#lE~s2PnHuP zs$*`I0e31#x<2H8(kp6Xl38uQt|U0J%`!X95GtD30>j!(wYS2t-Ih8e2cF6nDGL(L zx0TJlU~OUtrCk(*a9RDkogv4_#Y-d1K6TK^Zp=+(zPUwFr^%#)HxC;CO*>mHY)0e- zM%@Tobr!B`Q?oT|1(y~w4*ZoxjwMsL#@m}|7f=ED$HY|KMg__Vg|Xp)Okc?~j0s(& zSdB)Vh^}}PdWOZH9m$O?H|brwZM(Xg=r8Q()RNH9 z!H&Bg#I(DBjV*78vWwG5w16@&F;#|IH_o2C}dz}H@dJ3>^IPx_P=|IxXuE_RKqJINUq9? zLEihfE}d6f07(_CToa!pQAlCMhkmQ1vaIQL!!-qMA1zU^8%#V zN=IYVvX0~7Qt9Yaok>0n%^jl~WCB8l>tIfdqgo-LWRh%}XUA1+gCqKC#Qdd?`arDQ zCnhoK3(8_;)ZU?wkd>H7iqaNLqi|od1KRbRM;rk> zZkXvHko`i)wi^!HFwk24sv=km3T$~YBW$DN0k0#4>9kvDSjcUD6>S1ExEP}(M3GN1 z&B$WeB&kJ6z|s^_S=2X6_pV#o8EF#mxe}&v$4fR;cls#V+Q?9y@$Ea7Mcdb3NQnYKEJI^}9lM8s$jR4I0+iL?g z&@6=9{{RZNTqr`4i#s+fjAQmTn%?d;OrLZumN2Zr>L3Ab6Cllj$a+K zFp)%$9OQWm?b^xY(TZv7{OaDMDP@KnV>U7Z!z_SEF|l8Fw`knb9n2Lrsp`hEb!&m0 z!xCg;d#Qi+1bD~1y2{q5JxXLH-a>Dk|X4nNnH(<#GL{mAGht%hjCh0N&;+Ln7K^jEQr|H ztF^><=wt}dk7yd$F}KXrtzM|2@*M2Eql;xwb6V5#Xjr>6&8%Z^3Xf#k+Xu^~VArWj zE)PP&$Z>Zzy6Lvtbm>`K^lDdq)tD#7!^F8^k&>nMb=wHuf1RmoqcDjSt zYX#f1{{W(?l4kO-u(+?Oof~v{FaH2&BL{SYt9;spUyW(WF9md5o6;QIE zBU0Bt;a1TySmMhLPFzhIj9jz;w55OEBmV$Nu0o>i{uM8QpwGMTu#m+(*s3xox02-U zL?X|i(TcX0rLNC_y7EyEwDV!{L0?Og6-E1zfq zZKd?0&QMjsX%`@pqllDw!3NRpeFv?9?eVGVTChZz__;BOC&b&Zf}Tjpvv$-2{KZg$ zCXb2crk5IMqLFL}3IdgTYRbKI{3=s*$lNlYGaHwJQv(K^rm#wy?gQb}pM_6hkm6(K zJf2gNl5eWwGa~u`Rw(guW4H>c7s`$8 ze{mPJB$o`X&%w?#JhDwTP9Abgoi)x%%mj%#`a1rT*cIp~aRO3woaQ+a<7A}x*(42^ zStd!gq8snWnjlTRcYB2q=pBh4l|j2nIWh*pF^yo11|a)L8=L;3J5;gB4qULzX3O(5 znYd0NXzUps)Yy`ZYgtda$Gyc;M7CAJB$;K-#CYSH2{#BQK_f@FS&^^MgV2tmso-AZ z1368lW{u~@HkL(=wjvYn0S~why4+I`O~iSrG(~(;F63m^`%Z`9Qu3jRnjF4Wo>Y|- zNiz}Tk7(U+w;&ekE6KGQY{m#-as;Ah1>qVyb$Pezes@kSv(FFP}CJG-ciu-?vc_FQvu^62O|y~ znGb^+aXY)ncRQF)tJI(AQSqqhWZ)DqTuf86PSJ;!KtyvEAF`@$+krOJ9`xJrQ~~GS zERc}NwndL@u9r}HU9Y9@YSknhvKZN|vNvKv++RcP_?mruf<$=fl+N+vwThoz1-t(M z3SwxmV-l*6;KabG*WB6*8+IFxm7GY?%VmQqM>gpd3As~p3aHz<)Vc~w+%8H_6{o&r zEWf!ix`YJpDiyojU*anbl>LWR8OfeAmodqdkj$~jgh;B$>|V{WbsCZSx>VNIryQ}k zGZ~x`zI?Os7_MO_Z_{g|{{T#E*5CMg*G)FQv34%4@B^8f$>RM-89Fv7R#uxG#hFMN zZXX)fwXL#=$_Y%R$naviIcY+XAZwAdSZHiE*j8?kqXhHa|Z z4(okIv{?6R(3k|bp#iimo6SQG_yv{jWK^D z0ZC+aUU_S35y#83h&23cDq=Xw(+>DeAetnl&@B> zgiFIl+1chMgex`WlQ1%gR3YAd*InDXR69DMpzPSOu<^{0PW1qBQQMBq}iFg(Sgim6wUbJP=6JK&!LJ zt7ehGAJuCr`l;$GEos@v>{cpb^72Z2ZpPZj4ea4T`R%x_&@?8ttkkNhDfZ{V3_~0T zigHxUKuyQG4c*t_TQyeXhJ&ynR69&+@-4vu?j5_U0Dqlhun=Ti6nS|e@**%KfVnD4 zg#g;@HQTSYu(tM=3WCy3FOH8CuaIm@h6J_u>0oVZudQIWHo=vNBzV~g;9$83z>*Hp zCYI2f-rkkcoT+0@1s-hDOCz{gi6resAe;XHr>ASvk3p-$kxcvE8KIPdpSdGB1o^%< zw@oRDw%oF@3ao|Hynr)m8`|ZMQGI*WwHBE+zA&OPPDCA zMIihYlPN>Uk;X^}y4vJv{QBCmvr7P$PO>njki?~xRyDhCKGoMkE&i{KB?UAKEZGrG zs^T@4AW4lD#Fo+Uqxya#DCe`!f4(B$uH0qubaBVX!O^!2W9u~SWN1-5PCo-mTK zy8D46cJKfMe;VhE6$F`cPMcm9R&;gpWTCnp-zt;a;iX+_QaTxh#pb$hy{-b1+V(xP zskKrDJ|1))+*Pr%(twb?-~F6@caA=E{xM2)06<9V|#JFVvkyy3?(on2^O>3^ce? z<&MuA+>r7y04~mpVbs-GNM#K3$kL-mS~x_3{F4uGE1?=`{{XV3RyisOCqKFzD$Z2c zp*AiL%eMZX8kib6T(b|6hq`2v$g8O#zGb=Y4OdA9;IGV)9hO&pBVrz93Y!Ch0x;0H zV_MZr!3-2l9ImdhtchX^o7mf^0{yzuhz?Fy4}s%Yn?wk(!G-8Rgk$c@Nu!!ODDEaXkwA1jyByGv0bt`8`{TH($&$eB#fY;@t`Uj z*d4%WV>b!uan}B|-q@NV$}kBe5Xu-v;ZcFOkPf6#NsN*U=Pespn}*aKM&93;tvZ2b zxn@LIo8CIyfqRke7Z%gfv%PW&g^Vl3AGMPi&$W9puVdc#_*MuyM%KE-aJ5 zF4XX4L>QKou_{`@zFw9D14Z_+qJCeSnqT{gtrkr3BOHj7hH`^#kSX~)mA&s-EU;x? z*Jr}>c<|PIRE#cEGRR6SjBn){k9GQ6rE6NK$bxZYgCiR!5mA)O`<*RzWS40w zTiVw)H7>B_gpg(8Nh~<{nb^Ne;8GG{C)6QU8=lrZ3k#iWD!a!F3P~|CRzmFv$Bl-m z7KlakWEVHCj>(9bQPxL_IQ*-*Zx~^;o8M_C*WpQ|0kdIG^%;1w#BwH;K*vbP9w$F2 zVs&*?(W@nO5-^YWS!9+c%*#@IXq(w~>`=Xe-+HR_Jq=}T$vy^AZBeM>u= z*|b~Si+T_`++MmW+&~=VZpu?8Nns-?ZzcB@Vfv5bPPT`DA>$>;7}-(6<`U~^Wn152 z{RiNCn$v4ZpfA4NNM_}5zM^Ky$c{hzW+bUaRlUj{pe};3yJ};DO*ygX36ziRWBl)L z#q(vedjiA`=vD~TZ z><_|;6dYz^LoJ#!7+Z^i+mw@_Dl7^X=sp^ns@PVkBv??Vw5SdnOIpQ&>_>X0C;;Yg zCyE{5ZH!#Jni8k2fbPbnSZ=UZL6@Fm9yL=B{+>G>;Sw?%RzDhIEMRQ8pjgG5Z~KzD zI}{Uesype>3V2+Lk-~9!2(sleX{x-STK@p)LH_`iF3s>5K+=8Z#zqK+86_vIrG!iT zH8%XJ{wsMGbVdIF-^zBzxXG}7ktV+$qQ;-X{YCN?9Ct6na(NM^;FGrIPcZSgZ3x*Q zJ^e3A)v{SBG|N6i5^bIgm28NZ-a@1IRQ4nbZnvtCYcy1X!S>EGFg_9j>Y!~7TxD3}0Dyg@!xvcwuZsAM7X;x<_j>NNdd8}zG8O#{kIISY^;O_KXv00jxP zfg`A}Jw*Zv0C+$rd~lEqtN?#?z`eTkp#gEmX9)0xq-dQQ(>MzImiJJqZ_~Z2&-)tx z04XxJCDuMlL5z(Tkycl}K0W>Gunj>rTil%novWJ3G5}wcIY%OC^JEJK*%uK~*Hmj2 z3@oX3>8Hk$){vx)xqQAw+B^(bSRgD}2~i|@uiVuj%;{xWL8@zMQ@Z}zJiK_AxrR=>;I zonKI8W>!z_s)4k_X#C1AxP$J$YudD;e28^G_xfZJ84wlsY6iE~s`m911*SYWa>TAn zDz4~()qJcp3`bqZPPH|&c`GEv5gF%9XNVRtGd9xN8-!O;uW0|1sxgL&d& zrYQiKx`rKezjIos1cBqr5J=tvHXD$tx3MH!V)fl>ETm|-#LkxcAs#qbljXQ;JBx$3 z{u+ssmjSgdC;LSf*n`2{?lH;E&41g6p(cGlAOYTnLmf;cT#GX^|JOtwCsC6i#c;|Upu33G`&9|T$jeFYlZNN+dlPFegM$emGg5H&) zDICLpdfv-s+y`C1AI^&jlOZvx89?_B+g|ntz?za!yobuSVhFmmj+X3x7N+tHI}<7} z>XAfIO7Iet?nY*uddr2FSKi1`x<|@29>TdH$BLp}_qe%&73tq^#w*`Jz00u+1}x6Lc<-kdYxLXcB{~X{a`}bXF1w3*z|BL9vENVU3cF zWr9l=lH&ad{l8D=T-$b5W0Ao+@O-o71c~FqcYU*s;DDf98(f-CZ6Fm$v+xWHA~O(? zx&bo)0kQXNVtNmUT6D5wcq78g%!*ljQ_7MXT18S=fOTVkmrll=>WM}B^EhcRoJsr4 z+ucxJ;4PK6TIX+}y_E`AmecW~(c}?piO8lpWGn76?YzZX(E9@uyWwkob$0E?TJwu9kDx`tQ^n4*%{!^w_-n{6h}eJ}2< zTA$QRbi&HWQa0@b7qc)Mik)@srh=DsQPj4;-D~%?nEX4|s;*#;5ESmSDk1}E z0ACvoG(OS}oodztsm5L$h>p@e##@0Db~d+Lj=z;%EK;i}ak9=nN00_Fvwp}rTHP3d zTiUWnPbDytJVPwk4-)%=+#n3YKo93pO2Yt{A>%RZaiu$s(6dgLEz|!1NOT0$*|*5x zZbl`U?}XerBXuc1aabIBm!HQckXzU17z9(+*p2-LmDFyw2B&1JZEWHqqqUTq=WqE$AM-- z6xuTj&$*a;+Q0*SeZrzyP(`0Cj;-J%kzlMfVcPWSiHHDP)SEpqOIl%dmPS)yrNK~p zvHa_6EJ-Db;wj4ddFDbqcZ@QCV|F$mNZ%-6E^ql(SqmX#V2oH1acv|j+BAN^t~Fvy zeAGGrq1ANdtY02tvaTR z(ip+@F-DTQvP2{)5&*Ub=Qr(r4GL3%%Ky|IA}$|ulB zidf0!Q1d$I5y>}?TlUtprC(G;`U1t8Qx&4c@Xd{or^u4-4InxZpgV~8)|RXCB*FPe zF>*M_IUFt}PB!rlOxVKX$$hAB%(;$~(=Wo&$~Sy;$D${H5X$A0u`yL=6lLp7uiE|QbKO|z27iBZ%Wp}0{4!Og~v%`jeNckB^fR)Vy5BAA2fgH z(*5g|+RqGfL&&RgEM|q}np~T{OHKkvbtb{Dta@E~TcuT8JdEKJ9%CWT$dXxC976_h zV<2t-STeIkl32&MMjZ{(k(f)eAP@xHq0yQyN4zJLTQDDuHozI;s3Cm*u}Q zR3kAj8;OVaKhw(*d`zr!B0`MFcWgEq-1Qf=cUNP+nf~gs8p#jYe$G-UByh33b1vc! zw5_}RZ(Up78Z^<#yoK@a{^(`{t%&~sD&S{g1(ST-;U$*I3Jcuna%s=vFD07bD2aODti?GJd5+#q~h_CLYVV6lP2i0Hva&WUjG0nBe1KZtYnuff+>0OkghgP z8lFjrP~fsdBCXGq+uSYx0L$s#pG5Kw$4!&WE3C~sI*;5T7y`sw+iP_GG$;Yj+_wTe zoOxrF2?I|n0qb&5b?gV{RO&9li_FE5`*FVQfDaok-M8*<-|(!RAgKX#@-ax1CzY++ zP@~*`DyV`%d5%vXh{OO5P1hb9-|;8>=%pRlt!}0tGm**4l*==gX8!;R@2<684tHq> z(ChrFgf^WG08fvZG!104Ms<-NP*1{?AWfRi7w<`Nal~^oWMZHL!0bG+T>ghWSKw=& z`e%b`>;mWh_2fAc(8K!}eFQ3PyW;FDTkz>suR>gtYss5wXXskp>@=>0RA($6#N);*0Q#=%dO3B2PV159S4Uo1>{uer|VDrXS;ja3Q5<*xJz`I6kb)(>cxYp?^J}@66Gs|Rz?hxD!!mF zCq;07rMrrzApCW4ks7LR3u~T%K|kk8KpT(qJntf?XOC*C?JNf4qKkKKm513_F}bdS z2aAn{EYm{f1R$q@PZ;HwzpbFz{c z6KI&<+t*Y1R*wD*;5(0t8Vq>z6%~T9FC@J;s5Tb9gSGqA=5jWQ;gJ6TP@#s@Ah2Co zMaQ*`wIypvP&q7S$d)`f;ND&kZWI6(H+u#si+#EqwMwdDMK*S9jV3pUB(PnPBSWLL z{o#kqy^7aGXp$7N${dV{GFvD_A#yg^MT!PpNxkk!y@{+Icw>S*i3}KjQj82aEa8Rq zR~ECV7QKgF)m5QrXtU-(=0K(!Z;v2baR%ELTOVobMXHImOCBSd`aBGovK^q#n5f5@ z7i*#qb4l*L@^@_bii=fF1=y#^NmC?!e36ttx*i}Hv17P8FzOrAs+!TnU{FwGO*DCB zoSoZ=0G&xX>+!CYRL}?IZpkHJS-gS9z4q(h zrD?#;N89t`Ng`qANM(XyX^xgtZ2|ZydTCsns`*9HWVq&ej6Oe)@k5BQ!@Ks$vnes3 zX4`9a>TYdVYNK|7?9wUoIq6ymaxmn%L~p2wqLBxYti^5fD-(N<&bk(rEiz=7O_iUN zt%_cBg~)t+D!iZ_%3~yp61}N>bsr=-$0})Lk0+23;K`xK3OtNgU9vDeN3VJ*WVl%& znOV5t%PgxX1WIC9%Up{K`Q4fNW2 zTC&-xG08GUv&zdUD=1LWOh`~7I^EN`_;od%lmTan_dhL-irBJF8YANZQs7uA7VWCA z7Akwz4_af9o5{#=@|=j_nc?zfHquecNWm9tE#Gf&x`R%&>hXePEA7v?XYfmlGKF{n zSsq^+5MTPQa(eW&XS+&K?ownj^D^Ru1{9n!vLj0vDiw{)Yo+XOp*s3fr6-0AuY-}u zj~qvjq;j3*i3P(B!up+^t7}m*T$cPEehy5jk19y)SOrx1iQU+XuqUs#psY4gt_rKk zeamGL9%gLW3fYjEBL*->yn&+yB^d2nG4D}U@Kd`n{{Zs&oQV=-$XW5wmM?J_0NHMW z-3icFPfnyJMFb-vW3ovgF%xais69yCrkehJ=(V60M;Xy#gCg-Z_biK8| zUeqmZ<%(dphmpX`4ze<1Ng>?CC}70}zFh&i^sL=l;H74c0Ixt$zhT0TV;)n08dJ3Bnyyf-gumOqbhG;!$8CQ#R?w*VB?h>u^8Gh z<_-H#@}l2YX%%(W)h@6k!o=7TE8~wM*#7|AuHtse+J^_LDI(T1L2wNDm)b)rvRD&i z?E_2c{0%gQ!SZK~kyT?!A}wUuroYwr(^be4ak0hZd2(c73KJ6#iwhm6`lz#kkaAK- zI!2h}gp3twPgnP7NbCU8-aaJG%Z9<0HF+j=OjrK^b8y_I+WSa8(mU20_AVD7X%nAt%O8};jLJ#cPSsm_+TV@q zo2F#6!Y0d*N94#3QcKy{Hi7{=M$^*t`uZ1M3iiufk274ah$}LHNZNI|_#4sH)Qec2 zCLSD_*T%6iP{FUI^j)^~>!l~017NZslOIJ2if?5nb;-H0^#@zkNKB)=X=9j4jPX2j zTlYrd0S8rZ$Je-|*OUt-q#OOBQY27qdt5sAZrwd=Cg7yld`%w2a7(KIfHAt2zfs%x zR7-56qz^hNSynS;hBnzA<72Up`E;#nB%y#ZM(Ihz1q)U=t_ZH{J87wTP zZt>spr1OJH@J7;PF6m)b3PrY)?F64~$^NPm69nX4@;1Z*nZhVwqjIXCwwC^8wN4R} zMJ#-Pc$Qfu5=|!PT>{%+_z|YlZoQ3mUt5DRe0lIZQj;SAHOH1WaMvE?ylbOsJJwIJ zKs?)W+2Bbi6UPGI>LZ88wKN~N!$!BM?^@{VUIf`!7B*7FB#ZBgEl$yJ3H?^Cp6Qu{ zK!RBlAs9x^HrYYiU%0R${{V-^i#RF^8Pkb*qbU<4v4Q6oATjQCvA92;wZ@&){{XP? zN0RuWANyZBK;W=~LKMd8+OZ=?3_5hH{X_I7Y_jhbLrexjsC;a=T*r3(8cT|^T^J*5uY6DNN;J?y_yrQzLkx&!^Z#@8GN>aEX-(GW;ujSi+kPu3( z&V<%#y=DP2y9yX%$+WYq@FRfxQvNS-3S1wVLG-STmT-g~a$;-aqcxG-$ttF&~)a6z8Ai!^iQ@=QcQAxPE9kM~57g%Pl@>G{^wwO{?grdRQJ z*)SyWywSrh(YXzrwzk?1zohclovQTPKYC#MKMT0-L2yvq`HfmO{#e+EXyg zSWUbpS18A>;=Q|ctvmFzwxU~PaqO7#K>sUNXNVfXTIaSdqR$%jRIjh{OAEOy}z9T zV%OGyV!h}B%Z1C5DZ{1rM{>X)nGTKot1Y#ZX-gW0vB(MKF~s_pPzfp24MFQ%so>D# zJ))2xh7pccNPu76YuvH9{!~>BumdYONo{P1j>+R42tB~~^%bgQ7dYv;RhifB1j^e8dd`y;iJh>c@#DMsBNyDJt^AKG>)N?c>uwdLlj?7 zoA&jP^-|5)fGw|j5{#mgC(Ol_oQKL0VU49Av6WQVk9YL$>q@p?xbTX(W5dRUo(a5i z6eD|Ub|%K>@HMKIOym|x;s}uKydS6z>IS<_$i3>)@+Qtx9vqvTiB}Td?-DB+SsP!| zr%sorFbSP7Bcw8;PFRm$i>%9H(Ipw*@C*_t{L6&)-FiWvY?j(50*rWPwrCz#zISx+K4~|H@P-CQ-tW^u$ zhr0J=Tbm6up8s}g$sg!c^Uq*AQzbtnC(~FWe1>A2B%Fb z>Y$cb$%T&t3^5v+QACT9&Q9Xi&|6K&bTyl8sS`w|e0+l#$-6@4?Y7=hs<$DDw%fHN zibZrBqztUkM)J;xWO!LOMgrSv3lC{)6S&r&3-U-#K)}ku85yjHD$68;ZHPAZDYdM_ zt-Fr3Gita%P)!RqTQLOa3~aVjpt!xdS50k!1V<7WgrwP?>bE^lb79((VAwp91($WS zQK;#2RH^|AnGJ~B_jx4>>bth?y}=~Dx)sT&L9_+rpT(v=?KOW(DxVg{zwo%YMX zlOtF0Ob95xQM9uS#0%=(G$XY%urT}yFjpi3?(4g22=2@QKQLzKD?2IVMALXO!mecA zIi=r>ttoF9W2Wu;l`K?TYwJ;2uK;JWIKEE`ZJAM(dul=5YxL>s+PbTF_;h!{Bm1*U30Y&gn`5z%eh|`RFNh zfyvTj0Rz~mS0L``aypOB^ty=_JaS~QREHUtB>{AE`fsJr!qtw!tPjZX(Bt7`=VMJj zfFMb6nLNoXzPrcDqW8J!+N)N@cMuJk?5;vgu#q8WBnu1NfGh_~3jtldRdOQJ2M3ed zun{9-Mz7-WTGBBD?)MNZr>(0CZL80bmKgs4ZcCSnxe;eW@de+5swpgiD|n(&EOl*G95|;G@alOm8biD&~0i7a#3>x|aljM^ZCTe`bk$Ft)UkP$Y$u zj*#)WFAIl`XAZ!qE;if+{{W}mNjCW#Wjs85nKOoUc8cx0#8ke(FRl8K+O~IuN<^8Q zGU154xdo7darZ{R5r69V(Or^KOotv>V9bjc1=%p&0e_IC&72e1Tl1%GBp|ennl>N1 zy<;Rbt^)u8+{Z#d8do#4jUr6Bva&fcO9{?J@;pukszGANN!+%vwOXvH@-~|Umyen9 zd^r23R}B6^t;qnfVWVh0Xsx|SfI$x-i8|Z_vg(ayARgo&g*NKY`oYYY%*+xuGB4@W zkU;8n*Gg)_fndVB)K15iBbhjzYh+ zEyw$e-NE;6Bc((BQe8?;LK!jANT*`6D-g&e|L8E~V?GbsRt)pXY9^Y2k^=V zcL5uDBwK_+2eS9weNL3=RtgsdOuW8RA0Av{_6*8NA-k&s>MM1vE(z>Qjh?Vzy2OQ3 zAb`gA@2U@g>#ZwRT#*FOPSKCshEayh=>stv^cT1W+K&2ksA#2Nl$k_^GwmsGu5|^p zA(!!}XlUmnFOY?UnLO&KLd*aKu55HYbkdqgXd?qTH~Ag*#6DDF2`)d>eJU+cwpqtM zIGtpWJ8m0Mu3KOt+5uVhWh@Vq21Lr%j3T)TvAY3nx~mUc{AniuSI#1mM>x@ljG%cO zSphd*7Rla zOREIO3~}!q;Lgosac-xj%~hCH7I7{%2x%n>M%!5$<&Q#cZfiJ_ngz-eNfN6fEI@8S z>$koC0M4qSX^R3mBv^6+IdpbdKwDbE=HDH3?M>m1B^~3B8!!&>?Uw3Tl_XdZb-stM z0PY>P1Fic10F6ynN|ewBW>13)!;ayjkdVi2<7i7Q2Ws4tyaJfY{_p(X*h8m3Ozw!&`nftg71>EYWgO zVm4zIYl|>eQSIn_i*Q@vrE6G`6wzc%l5R;I8Aicl(S1H5x;mjWO^uRqq)RGkt=w+w zuH^JIH7Fs5L6*(u0_C4rn?h~+_jWfQ3g>l!k;Td8AV{Iu7={3VS)4H1RkwDxK~>Rm zB0m)Do0&sJ(TTQ%blu*s3n)i%?iQB8!i%=Lm0w?7wJtaq`P2C(cWFb&*54`%9i;ri z)*UHQkP>s{NV1klLhe8!5tS-h+6QatbA4*LK_TZ7Mu*Ej?!Wfr0wKRf-fweaE%B_l z;2Ab^E1<|vdjL1ON3<{+7xwCw{+m=NP64o-AE%cNL64GCVuC>~NxA-$t-qaRu|={v zyacvhW>`savfgYsnS&V!J4%aP6b<)3`|5fs%$M3uF?jiMWQI(QjT{5VjFGLpk}%$F zx7}@iZGVM3Y*pisNVm!0rGZ{fJ~xR2F%Kx;DYB1gRj~2vVWsPxY)=esrgtsoxJ;yf zs9P?^1chF@*lBv|*R6OF7c0j@J|X%D_qhShi(Hj#t!c_9 z$Yr6yoTfa>50nz{1HQzKcKQQ)5a1IlmzF0A$ux-Cqr?J_ZkHiI>F8;xf>|(;GBJZe zmnglB%Ldo*B80}#*qbOsV>6jufYt1VG3vVj+<(HGu#wI@Q9z9#54}y^zNsT@6cF4+otSxkk1pT`SQ{ z1xi}I#Z;j|UM%?7l#&;*_cDyH?mVteS1g9Klwy zMIpQ;m|xqa@2%gix(}AMRrMv4uOjL^VHrcQCPZD=BU|n3b4}Ewz@@?RGa14%F(HWn zums%b4_<`+DS^NStiyvK`d2$1-qVt zt-%Z{Cn0em@{|F>fMjA^G?xSqcD=R!6swm7B9|jCkjY;bRDwxCZLZcfXqlFfyBhkl&qWfAn~V=5*GU0s_J@*j?Jiu8aQm|R%D)5@)Q2*AOhN5wtweM zR!7)SwsK>{(xuf%k`2wS))vru8(!3$P6V2(6tH%j8)sxQOJOLpDqTW^0UDg@ZF4S)3o3DEUun$7_rr3d%^6epDFj zq}`6Ym59{pMyI`HM)(<@Y>1yFl~s@fbwjD#dV~4bUtCC;!N!%O76coe4|CqDu+b@y zn~N7qjo0Wj{{Y!p#E70u_S!XM*lwd*itEVM2&8gCl5W4%+!Lt$s?r0AvRXL6lIZ79 zPL~I-<9ce6$u79uw#S7sCY401wn(v>#O-^6_Sb1u`ERXbdc(n`QFRB^U@E|^4?Os=kL6L^-BoYQt$6~PEZQk8~Z`?KQTUT;#IAI2R zH00|ZR3@g`rCJW_0AE#hQ0YjhwH@U7;l2tSO=mjRFL z2eO^ZAR2mgtTxqHJemwYxLq=e85l;^@y>(Ww6D2#*zG&I6I_9rL3XI z_yPJZ0$wUyJa%3>5NwkM-*;di{jzQmk8AaRsz>x9fJ_8&8Zd_+AUoQsA(3zZt@XIWQ5LQj7ntjNQvQ%t?X%f zGd0GV+r6qbR1*t|NOJio@fl8Z6G`mG#*=6^1QMak5O;R(>uQ>)QfWk{Jc9EkIVFs2 zY=5P13C48V%(gz|KQGOp9lGnSI<`uGtdgHq~oi<{Pg^Li@l@FWj>b(oGUJN)qu+G2Eq@ue1OMU2lH% zHliowIG2)&VkJ9TQ)>$w4aVgK@6+?FzBndi9LT%9#0Ed^B71Bv*#7|ML=r~njIuML zJNX6IX#(H*)~S@#4J+f85f71mb~@^M{zi(9N5sd6V?2bp7FMyj0Q4mG7NXW*bs;*$ zgb0Q9sj)xCr49!2=SIO@6w0bEYgh%dY6Vk(IFl*aRi^fh-r~c4(bI9iS`~6RI^(#Z zl&wBP7_rcsNgvE~^!4~reUZUEN%InDaT{VJXxo*6VA3*`vjf|q28z6cMGiqe*#g*+ zucu8cKPuf421Cf>vvvShya?7~b9flM9yUHWWtu?$09hnQV2(y>Ew9&d3z6z;min8t zn=2%WjJ%mt$&8zV3z+2BRBdiWU2Eiq`~>kBQ)OcoRk|rJ61Y1zuWOAgYBt>`0tzz0 z2@0TNB8}3JFLvptf6B9l$0t(AqZOS)7?ho*iQL!g*IE^FIY&#B9`Y+ZQXntmVRBG> z)<5YQ)95)0h+_mVl+23m1W~(tcd7Zw0NehN*0ZyI2GJxC73C$wGMVLf07gJDvyEB9 zE&ZEm!)Xij3V#&*rcuU_2yr49zERQS-Q<)dt$Td5_pY^7F6flJVlAco5|=2WX>hje z*8cz+=S#_-U|9S~8)C}8w;NhHBmzRxKe#E{)+^S=wQ>Ng%Fdxi=o?8a2yit9#NSK) zbl_<28DqpgML_C`T_jx_a2KmRH&I@WC+Z_?<@f}9~$hllOflc$XOWz#$=FKZc@d6 z>D|-uqvB5@Ksi~DAR;sEZAu+VpFqc2)|$`*M6t*il1rYQzdE}%xC63+)={X@*mM`^ zM1Vrb$-Xd(TEJ*;px0W9DFiUs$`k>nrIgs*^q>$%HfPhj_*ZsIDy(IIa8K%1QV3-t zh>#vgUAOIzU8VeEO@~r;b!I;QdiCS%Qqxe9qgZG3NZfT-%ur=|ORY1)Z$0r(A(DlO)8=-1R=s;as<~yU&8w0J3?UY4YE}8O+GXMObo^bYc}6F&4J# z^cSk=;8JxiblCYsnC4tC&Au$AH+Za1UzM+GAI7w-MoDBMJbYX%f|8jz zJgY=wBJu*qpz2Sqm3+AHPY5Ro@;JOz#?E(X2`!Bl)-1N@8MPnJr8{NdYY66iS#kuE zVILftG>g#<{{X0Vq?f3f)Gi{0MsrCfT$-#9nAt!Fs}rRbsM8EQl0}XLc-}nHZrL)p zp2>Ue0f12_Zk7V35Zhn@@^hld&dZa_mh2*mK%s3C>NFM?CYx|1i7}kMIU0iMNB;nX zC}3c|TaM#H`DtC~qoB$4S#&jUuEHXxIjYyv5@yKAj*CzGL&$%BH6xJ7U;aJpacwLZ)suVU(< zAz)w)ag5FjhF{khI;kF&qGXnFeh;OAP^Gt$^>hPtK%gd@M^O{ItacuNp@m z(=yyh9EBry=^)sO&wF?sj`ee6lDRdPP%o>K>91N(WH@827W24lMQl|CVR+*t4S>4~F5CNVSY4|=T#2H; zJhmn*V=YRO_Yk(M#Rx5MdS7*j{OeSNRKYhIbG^AqkB&@|`NrY`+T})@?0P8mt94*> z{JJ!|<%lY>+a7QfJ8e1%0_kPHYEM|(1p3tS62vpGA>0ewOONAK)DEF4CXq(jodJ?L z5PJo{Jw3XAolzpke3Z-aV^Bp%3vIdAqV=Jn5OPN)&gmk$I}#rE5;FUDTcuTE zFa>nj#xI|9O2Aq(sXBG5R*}IoNyuWWD$d4SgeFMT020;NQufX($WKIO=18ELk*Ty80U(w)MHaXGs#kq+DrLe4}szUwm)~mEA0NFEqlDkP5g`^=_BhZAf0aMeZWYEZR^D-oa zMsC5_fDV@+0HBW6wK`KGg1c%0@`*1aS$6j&f7S7>iSRav+Ibj~@{`;F{BD0b6;Pyv zOw4wjLFzvpYWji_?{+BHRXr$(7+i8PE1*!o3%cpFuS3^b$*&+!;Ep^akg8gF!13<) zDz57{T{Y=ST*rV0f()eO6bJ~&Z*oQR24kj|?fCSoZ8Rik_^i{5kP|9jnERv`kXzMs zwx+`M$7-fLo&Cp}A~D4tPT4Tl@aK_)EQ zZL?bh(#ospeLZWcntHiIlbK`Kp(cmvCX8)QZ~?`)T@T6!p}xH;niL)2W@E*^S)&P} zg}L$&56r<_9mT(qsJfmCM04^{B&x6~q)Oh`P)_Y{zi(^z6e>0imUvArR3;)zG=|db zHWwq?Ct;^USz3uX3Bg;G`8e?xj?+mIC8UiBPeyisl=L4O+MQT1WX#BvylEReO|jjA zd%d~?Vtr3qw@Qe(k)I65CU`RB$c#~xF5RZ~1&n3Fik0>wOQX2guA zjuj-03O??aAm8z)&_%8cT;DA5>al;xAClYUa4fYGHH2< zB;)w*J0B}HDe=-Kjzz`V0?y1?eovLzRBkQQ*D|WMQLf2^WqkPa%&QABDzh^rmMX-H zkbv|oM%vo7j!aWIz{1ORpC^$`xFd6nb~})w>Y&IvjcD0)u~CGl+*k`ZlyQP`gf2Xh zACZW+v>X1K%iy=Dorj;5#}6bprrbpkZhBWZZZiad6Y{Ok+R7XwVQBn znOOY4!lv@jAd`iRxa~6!E+PVVt1j!`*!TYc@mLSWqF?R^mUiLdggiP#$PBkEWM_|E zt#P83G%4Vu(N4K=$jcml^4Hj-p&)g)!nNr9gp;N>A97yo>QJ+8I|2TicQm^&I%vTc zkJ{232!+9GYAyOjDzIl5!eUw?p;V5BzyJaEflk>PB}}=?ENdU_qHR&9LNp|wN`{b# zW`-vrN{|xQi0gZIHC15+jyg~DC81aPf=p3`1QUCEK(&pTT&=6{AGiGdz-RT{UZ59;UT}5#fg-Q@$f$4TIX+p2CLGu`9R#)HQ6sTD8FfY<> z$j?~Ua>V}tPL@y)YpsWEMP;v%I4PGJ1@RP(a+sGbGaJT5{kG{_c7LHV5i_}u#?bh} zorsLXMFY2c-jZv`(?GF7m@*Ne4AP?m3k4(wKBuL~*017at!?rs@v}C4E*-I1{jHMce6C5p0kUu$whRy~N*V~2 zhD3puB#5E7He+{Ve{mfvlWkPXc{8(yK;%V?!ct_Nb(2f{dsZLsNb!+%2t|#KhRv?- zzrwR=GUOeMQU}>3E4VRDI7*ZX#9m-j{fKI*XAppztf>Vr= z?uJF(6sP742SPm!{cBaki?GpbTzLGO%w=rykP46uii`RY+Kh{_U&%;3rbIU(z>T%( zYZG(ut!S`Bl=1Re5XIn02ns_+>cv@q0y}&Sce>=t4jTaE$kH^nnTNJ33%h21f_yNN5UtPK~t>w%U|G3AT)qXD&GyND*|-paQ2-}-O(S2VTACIKr= zDNq!Ubd68}YYTMsHPc&QOo`cUs1VB~^j_!TVcw|$VxMnkJV`l;<4KsR7L9`Gt+#sC zcG{4^W#i?D#1#2tkd;W#F(mo}w$1rduE`u6K@N0zVkn{UW+69?#fZ}6Fl!52)~^sK z3BtyOAYIG1ZGi&ifxpTt$ z7zSOp@9`^hrE{t|@-P!JXRbRgAj*adv?4$Qn;<7}y8_8>{k5%@yH|!1OXkGLXj>yU z>v6%5{W8Weq%z5^<&=T7M&63LfojrxK$<7w;*TWc#U>)eB^|7S`OdkYDM3Lfu+#GfhHy-6q+kzN|14VP}xbIQb%&;0RM-l`XCys{B%@QOk zpb3=S0qdo@wS`hrDJ2P&hVo63FoH<*%fbjGc@ecM8!`4a-i$}#Q&m!opWG73fytx9 z`;#sqBS#n{2;?_V8dBx#MUCuq?Oukerif+Sa;rp+hjeT%wanBr(4&-uzzN`z#kFN1 z8((nK{3)TZ-JWMwjdzIEi7@~qQPA#f2>9ztSVAC)S~<}$(U&CO$o@j>YxUc0wyR7~ zag`fn0QqvPwqtZeR8no-fE%gy6dgm4jEXj@!y1ml*VFjayAAgK9C(5o%)y^di+ut7>?$jkQ()0LiJ3K1yFuGg2%$2xA02zYT;_PmYrlWlAUm7dGOG^J$kEuG~uUv$!v?X9dy zy>cr_vpD^sjIza<^)rwQ!Z!f7Hn!^!e>$KAQ5Hiyc@}Jmf7_4|cy{Vs*a5cPiTo;& z2N5xlF4i^{5nlHel(D!hI_|5jA&8^QQ82txNcOo`VoASsvtOsJYhQ7|E*=xj zmLNYNyGXU5_{5aN9++alc*C14IbUgU=H8W z(*2D>s^F+ArgvvqnlM!~XD?%Zwih?8m0>`v#*oNj@|Go-leF}=ON)OhRY?%ZgJNJs z5=pvgTiRm>PjSA8SZV6XS(Qw`#}~4^-F<46riuP`%36XUX^uVF9y_S-bo|br}3vVft|twN4c8T zwTK6=rA?kdA>;z+mS!OCx38sUkb*JBTjH3Lsv`xrO{Cqr{Az6yY2cX*xcL4u>o{e) z%VF&rdu{zEy=LLRLpVE=l$*#Sk|K<pRoVgCdk*5=Y5ZukL6h`z%F?Wa0`?5X z`d>l?I?BMTh*AiiCn4^#5Udp&Y1d0PPvciD2yBdK(;hbRdD&00z<@#MKspxap`&HS&)ouvAt$M=rZ4A0z zYX=@lW5bQ$muLVD%!tkHk(p0h17Lj(WT^avhKxQRBONoPk!1^t%`l8f6D)C^yID!S zm!LX}R(5w-LowMhfW|y&1h~hf&OMB_^le3tPfG8leO5^Z86Nj{K1P>TX4I4GR~`ih zlkM-hA;4vHjTUwxR>WC~ox!ek7X2gExci!R-Sn*X+RkA>)^cFRxsQ`kOc-cI% z#3Ups@vtE3bYjD`>o|d(45@|j;bJk?`_YA!N$NDdwJ%!d$l!`J7dyivTHs#bU-Z)& zM3WHgBE$h*KrB>PoBpkORM*^@$X6FHhAB`fE(ZLK<3`$UilFo~wq(+*Dtv6&6uTka zv>2paH)u82&}eHqyp+}eVwpTv)DeB-t&c-tRb`QQEFm#%MUVdgT~~XJS%5ztmZ)pg zL`*_UwliaE0_2iOJ*mjqqFysBs4X1GA==P1`;Zr3adlr$#<$a}%QUJA;&_Z)=9m6y zQhZb@(JRSyX6i3va96c;L2e4)xW3WE8Ton8KFnwpS`18Bh4z3wyY2%LdVdO=QgDpz ztur|I+^pGNSAfKX-9&{~y{)OeWcA_mQ|ka(FfY@FJkNvTzYHXroT}q zGFL(vu_bvKAi#{6$P@2vBPujjW;;V$^wzIM2DPA=IJ}9mTPpEGj6P{fs;f2i+hMxh zu74_VRl+H2M6z+4nEh0;K!^s|fZop5zsP=3=qjhsaFFSN8AO{Q8Ja`m#>R{d?A^us z6Y6>jBxqS}9~#cFgnac~jVk{DwT`D#6j%A5`ktcKf?G2)W#P>teSFRIuzN56R|YL$Weh$7=}9)TmN+gKpQ?*0QAuy-N8>DAPC+NK|;m16yCf8k*IjS^|T@z%O4DGEz; z`;^5bPciy~5`!AFF(8eA(G@_yj{RVA9?a(jH0V5v-Ch{j6+w zkxhz#*FKe%>XI5P`B*q{i42m)SOXA?A(7!(H{ae^gTL1H*4DLi)imIy@McFdfb#{* zm2$Enc0W*xV};ZZ0NjJgYkV~ATl_6$VF@tRkkeF2b~rR5sfx_n92iz zCmvtO3HeckmIMa*)Ek3Nt=BOiS4qTjF%}RRGIBx!>5i_>19c|fr@zLoyA^^7=I1#V z+WA>VSy@*eSdu>$z{W|CAW7l&#e z&b9k=6CpQ5uECs#+8lv(4eL!>068~8n-{%|tOx%9 zi|b)S-~nfqwh)aRN&zoB{HP9>Yjyl7AYc*W!lb-Zx6-h@_uE+ zC>j8);g~6H$7l!-%xdp-Qnl)L;E#~P$->F{e3jcM7c1Ng*lSbYvXHepxMToQ5aCHQ z2zyxA_n>3#q%m9arX#punt7wgfp^a{2;xsxV_`@SSk7#IC+++nxAEWGj*8g>qe&?x zi?zEJB(K8N$+_U@qB9xtEGp79tOnbkQ`DNqtHEp%JUKC@iK9E!+jOW22Wb~jNYeiR zg=pGjvV5nFaSSm30O~FBAE9G=?fe#!V`~I(vB!kSMZ8GQ+tX_Q05+$~Bf$loF;P_Q z+6qdbjpQG3x#|J<)ZZ-Ud1Tl*5XFwLSyRg1>1}EV{k3<8+9kWX7F4cV{z^!j6->HreM*Cn|faMH@EO= zEoMR=H!P^KZYKNoskgYby`!yx6je!01VM^q$B!y`VUBksN`TwOA{PO>YCS4jQ-G=~ z%vPC+$7x;InPk;aSla5ZYip*Jq~ICeUN#qmJS3Tvfso=$Nx0un86MU4(yL+y<>H4W z75A(&2D4)-Y*kkIZhQLGYqmtk#mR{A83>L0vN{FabX^a%bkx{uMU(6_%HIr=I>{oD z5x22MwjF;9`qr}?63}-ctm42bC;*Y6+M}Y6%e`ezG9U@EWGFml#qJ3RjpJq zqz-0yJj@X3?1+#-yBl15YhEmokwa`Zg4ZGY|!}KhO1(~(``ck0Ov{aCL6-y`K4@}qE%x8(GS$W)Nj}wJ~fux zLWEXHIeA>?Fw9-JpfQQAW8J0nwZWrOQI0~*kYi!vCFN#27zWgCwat}{x>L2E0!IuZ zLnpt_85U-7b|n0^J&iDMSCm(h@tch;ex}})x^S{2a!HX&kJEM}9*5!SO<~9~SmPnq zE!%@xfcTJVTk<2AG0x+-TS8CA{{R=J>A)v$vEES*r;zRBPTH6Pvgw}S;DOv$f zBP0(bDQ_LNs}DH zRxMzCZcS}SY(-BiH zpsp|SbNH3k2{Py7{z16V#^ye7vAhtoxmFn zSb#qY*4BjrM#GSkipJm|#mRy^tW1(gmlZryBcI$?UE7sxzU_2xg>unZ-c5TbgF7>0 zyqobP7_cc+mOied<+}r`2L|W1wX$tEW-Jy!Q_B~SICl#ZFH4?-UgTBsKG+4sNTHTV zvS5?O6@ri~yM}`2ue8ks-2Xj%18# zs^EnU({G?ZjY>@#HlR{r@ac^dk}QoZgL5L0Z4HPQ)9^J)%$WmBeA!&djUb95#CXZt zNI&TvYTeSq1Rcflc(^>QSs9TWh@u1PF}_hM?z4{Lab0~cQ`S(^gHiVn*^;K-W9{h| zH-gPyBrg~)(T~+(*K+=)IdsHhf7E{=N!SalNTqj>VwCczB7FG*tWbfeRRh1kes!B=B3~pgj7~G0J~hAkj!pHS zCAw}#I@nDy;LLOIRkRvp3_Jkk-i zen5Le4(S5^l$A=l^$!&vF~Y^i*NSTFlg z^;I9|T}qH$R1-_cq>|ZVWrJ#}T<&3EVoCU#hpd~{NukYXhl#|~AYyfd3zx2ByJjj`Ub%Dq|$b3oVbr;CCXDsWJ0nV%%7~E~IZKy}A+WS6)bPQllZ<0k8lO zb6wU(au}?>So}b;Y&-T2q<6PZb!No`jpRpsT)56OjyFb3W% z0;&KzAW_wN+NA*BSq>bdA}EGz6I>W_wUtygmO#jTj%}bF1vpHgxziqIjueQ9mPXr= zx56Y{2-@G)FJn;L42oV6qL|MVuw=yd*koppXdkKA*lFBes+XK0G(m(oq~>9Qa=e}@ zSW6~45fR<3iG8hM&|b81m!PDu%;$obk|;lF1_oRexcYeFE#pOSbh^3qwP9K|<+7xv z&y3FtW=lIdNht{kXDY=&BnM)3OWL=ifig&jD+igQ+{Qi1jV9ZL((=ehO}>>gE&%FT zCyHz-aph@-I1L=JF}JvH3a;MEfz?2;w@MafLIULbuOrBW#36SCyRc^3O6_B2J6yL? z#A(n}delIJABmMGE($eSS& zd|ZW}_T42nli3&xw|BHAn{86H4X_CL3?q-34s=b9!PH5O9mTt)c@@gTC<4qo2@vaX)Klw$Ochz&iAcVj!mT3{=kf(~BL2pRi!zWar&g~r zISczjb`xa6en$%A`Zer7jUQ^bM@QGTVADryka~32(2C+`QW^lN1j?t)68NPg`*x|g z_R(etw3Xw1tPRNsMX~W9EX9_|7{`iGOo0 zn=hdxoeq^%O_Jc9INW%!vHK5@ta$#|kzO$X8KtFWmlArWoS@_-O`i1L4dGjg){o5WctdQ&&B0B*dr> z!~09^ygUgWL}{avARjtiLhkmx?Qb5#@UM4OXz3{D>EOrBi9ZXGl@xG^R4t_6c2F{v*Kgx>wk!OHM zbPTXa&2m9wa7h-o@wHF6&m^Bt(PDiNDN8-qCwJ!dEgo?B}ll)L{K5z zA}?#3F1OH)Ng}gNwjE5&{D_Mwyz6L6g=Jd?EqjIjJ$@C_U2|LmWb4csvSjlzGP;df zZ5%|K5IsiS29%z>V3fdlH)i&;f`N^QCvAYxgg3Qbv^xUFmn+Caf;TOW-si2);Z*2I zTS&855#$Po$i(QQLAu?@wL(ya!f|DRp}IPjc2$oV5V76Ub^ibk-n5O$m;_bi)axzpM@-1Vx2 zP?@*J3}(oN*Ih2n)DPiIlv(jPli_6~j5HrN>IiIq&rw+Hs$~Q>B9q~aY{cI3SzPFS zfL(Pru|hPrUiAvF$iX@3BBO>8a^kTB8!q z!eISP!6*4q7zQ%D0Np?$zq=aO)Pmm|biELT2U182q5-Xdu+*PgNdiHUVmwicHMe_> z{SWxocDft{MU5`S} ze5_zv8DvJ7e&WCGDA12zPL*}mnt*vH%jFr~0KpwrB$71RHY|h^NglT}bQF~txbqg> zV6p%=7At#v0IrR83=q$bu#9l+d7Vj>03O@?qfb#<%z-c_OgNntMA0$az%90(hy1L2 z)H3>UmJ#E8bxzs8g{?xx#?=ns;&l^Wxoq1cwkbnD#pPiLuF|S**7^p z)@2%wo|TUcumH!#Tv;A0i2kMs)tOZLcGv=Tk=JhFdeggVP%;eVOnG22F`zR!~@E-9FY zk8G-8IV3PhN`>6kvEJ?O9+ia^YR1_fKmD#CEJLc@Bg%~L8=qSsAYag$R&vWu3cTE@ z_B3rFc$vWQ3x&F`ZrWC~p#)g6eQ2u|a#u zCDmh9>cZNyUfNa-sS`wVPle|^ae<*e&)hb0%%k@YsJ~VI6-twt5Cr*xc>Hs@MvQG2 z1&aXM8};ehtyVZ0&OR`bM?_nZs_eK7MyuD?zoj<)L`^m>NP%8NA~H+nbt|WTcj^QG06L{mkcj17tO>Exf35l(RNAbfZaa(Qv-uMSHaL^S zfXgj{#|oCwq;sPD2YR%>5L9g4@SHUKGfgHwW?XpXuRFxa9y@v$Mh*TOs8u@Ysyu`o z4q9nlB}7NDc%qRNrYU_Smvy{p-tVuVs_KT)170RZPdnu(hDNk`k;iDHAlRfUZSuAB zxX@K~MD<5=aJcCUeO$65g}cJCY;dIi0J$?8q+`$xe-lrD!N9=6iIQnUz_V!*qLY!4 zri%nks{a7i`uEb9g4YfRoJTGytbs#C#KhJLgI^|O{{XAk)A67PrORe@mN!!Db}n*9 zwLUT7#cy%8o6Rs6h_2WqjJv;CRszva{Mr65W?!b0)NlI18XE?E}G#!;zQ z*Vq352hxBbe5mo^v_-^Io3#G`{?n4)k@r>q08#v@3P_92?-B@=^KH5uRsR5E9ZyG- z)xIZRPg-Dgj|)d6gB^tVhyMVqj~+9~(ll5klO|IW<;Y{F zwDnPaFK_xqEchuRMpR^pvSVm*_W_H?D(fj9{K41bxBmdbrjW?Fj$S@8OnmNIHp!kw zWR4hYVt@hd+B=i|M1B-N6X9gM>bX$JxjC}0v8;S>Mo&?Hlz;flX>uT>z-S~AF%o9v z6XeRs{{U@vi`|y@HvKV=&YS=yZz7STutFTgGXpC>`;#~I$#0c^r8-tyHYI|UTT+S+ zYnX!$FD^&D+x?7j)yVJo4(7Sic4I~hH$N*gB+r#+ko3382cR9RsZ}Kiq~L?hJFThp zA7T8){RJ+e*l3^kY;+86eLf_5Q)>n`scC_fKB+#NYA*3*knIcsxDM5olyYS1{Fd2q z#U@;_Le4UkcKfUqq%0Y?j+Q#wvRnheUHlNlkf+p1G5yG)KHi~r`@Ug+LDsY7lRksR zF4h~12z-FZkdK+sz2yG@OItuXX-UyP)Q$-A`6(Vr7B!P7J8i`*<8m#?wS~7{opq!s zAi6+Iimeo=0AfeG(CFI!bn;c87m!09C|KLc8{R^DZa>dKRYxo!49aDF+sei)qSy4$ zR*iZR*z=^3;-tjgCJd~sH1?Ytj_1;NV+YDMkPz6l3Lh%-$?Gf`ltI;@(%O^LwrN zihUYhpm*ipi#ZTJ-RRIt4bmO0W4+r}TXd{^g9?dqvNENJG;!nQsC11GxR8OOz@&W4 zdJByyLg5JkV&g(3m`1AkWHF98BnSqf54Wo6}cADyIM4WO?M#+%zzT?n!0ifd6pL$Hx+e^lA1-v+Sy?%eVyb1f zkw+UF#z4CjLw&<%Tj^OkMmzuzAoIB*B_IR+dy{$9A(g zvw}xMVeTJ|CvQQ6b3AM?MC_{>-L>JFcSO%{3l9^MZMWC?R{C~J2n6D$n;Z#~+OHz3 z9W}PQeQLL5!Bue0d~+jhk$zXP{{YUoY@qK)GC&S=axRT6lc^r=n*KB{0rE{8rZ+Ij z?U4ypzuG4h;GHKUC*jvwgS zzo?ezJ64UOGlzxRSl|;GCzz7=H@D({nV@BUc2Yh`bhwHwvE%L2+MlR?C*4|AV8ZOS z;BomW_jpw!2)q2*1yV4e-Jf#=ToQ0Z7QOXlH}xyESH5~1|=Yyo3^J${BCQqiM7d< zfyN$W_AtkFR!~NOfK8O2#Pq6^xh5GZapGKt4>pUT?i7xI(t8qEK*%xzK_C%0mfctj z506@;=a6960Fql`b=$4)YM=?@r^t!azzLB^RAn|Kxzv9Oos~@#n0F-8iQQJt!0*~M z7xdSyWvwVFkVxW2jmnh1?QeEwBj)@ErBRzl7~7fKBx9^g5CPZ^Xk*i^i+@UXUI)k< z2J#%D{ch?HQ>~4wMZ^h^!#E*Bf%!T{Tc6kuh6=($!HQbdGiDU_Zu_K>`l@h!-oNBjZE?I58xCM?yD? z9c*vvJ{6m9gb)!YBWR3b^}kVsG>=L0E9GvGBU`*-Znc)Vss+*u&#>nfgMT_anag9 zckbUEzEY>T=x^H9BZI6Qp#-Fv0bQkb$fcB$KQT)6_5_Q_@}$j&6ADIERBzjdNX4|> zs2UvwuiCjfLy^J9H<=^DlYyBg%$#`vF?f~Zk*pO@nGWT$f2OwANXP?Waydw{Z_S!K z*^}vAFS%Yd(L-D@RaNLeF;?H8rT|M}$2@TonGx8jm~H~cUAo(+ty4{i(D0duGB%GW z1&uD4sdBg7p$v8MA4{6z-A=him5}WIN(ixCVM!s!kwj?&{Fc7b5xOb%-&)4CZOa?r ztDPZ|DCU+HSmsh8u(h`6HxO^H!nc-;;t=@%0P*+07x_pBs5j_qRHXt9OzdQyF)i`pc`hA&-X%XZ`j+i#&C&P=47kXOC}D3I zv=RdyrVSaB$Zz{0y%=uRuNy!D$(TmnN5m?v0w$YKBD&9T@1o>G+Gw#@(F{csy!1lv{>QDawlzIX|r7_6wj?wN_B1y2r-4u;{nbV(~_t-S2 z0+I}#NF=eCH)Q8bpg`!O$jRx86KNWH$luPGq#qgyq>#r6k0&xVEhkpQ#BRH#kpBR^ zFa9(Xz;w#S#|-$n4K7T?ES$8fR27TN%YOJS{x@flGiiN&CnM4wf;YV zpa>){xInQh$rZeKYosuq%{d=2{{Tp)fQ2Dxq>^Z*JwNVw87x$7`IaHm{D;PY6PV+U z6S0mq0VByVxt?}zmOnPWy-#XGB(aSm62xMJn__Y30eLOm$N6*}=>S&QS1K*>jIKbf z@vy^w+$qz0vHt+|yYyNhsV0Ipj%gx@jP6y1q@9M?pi}BEa6hF6r@b&EIB7h2JbDkQ zY>~4+B0;!&NGdEXcORiwMej-hI5W9CPa(%;_&(mrlO*o;C{#9>TDt z8*59f&;^qh4hVho>c$xP!)#woHR)oflwO#-%;OYcu}< zRZWrvfwAR|HednC#dZDIfgwO6p>D-ZORRDtbC2SJ7LIq18g>Y|13=!G9Ur+6hGD|Q5; z987^MQpVCNN4c(VYwdDaT#YYS-De_`kdcOxbei&$x)x>FW%%qpg8p?bSLg_+Y>5=Q zc|>Me2b?1vwo{7$aS$FoouS$3mgt6B!%)a zLq}jEQ~Qk0&#MU42*0r0hBcM$_y`AVk&TIukGu>fW9Ei1qGn*;-zy8;`gWxb&)j8% z`2s}&uma5AyO@r}Q0&*q3KBei-53u2DqUj|1d@o{$%_Oy@+MGLT$BNdvvdl_I|`mIk$nQiKV~raoAe;GGC`SA2I}vIZ9) zw#;nEG`67IwN}5xWEiooHZ~`f14tQ*pdc_T4vk~b_N&?XHw7mFyjLLvvc58#6zC1Q z{4H5uTS`uiHt<`p5+RL^w+n6>5PKiWuvj`82E)a9LB>!{Qa7*u`0~;&i5xdSD3pLJwO6c~}JJMJObeq~(?5%Be@wR)o`yF6smW#jQ!IM_0Bj?(5~D+nB$yo|%# zLjFA%^rF_l(N&X@`AoCq+8lHwK>#;ZE!$mLjd1PVI7dY_##lSeD3%uyhF9DnQosT& zZP)H^{3`^CY#$fNd&XJ5J@OIWSAJD_yeSk{5`bmP_uw;8;(4-d^nKL9yGEzNX(_Z z#P(33j-5&91zp@Gak1kwmCsLBGl5Vik}LHhVQcg>q}FZOSRN1q|}M zj0;`z7!B7Yi2wy(&cfBvR6`0_juHtZC1hpxTT8c5aqDAH{{SMANIwE7gN(`d`)*MH zvEDTVliIP_ZwPW&ayhY1T1-XV31lwM>=HTlg;W}WYR;%x0hO>CM2WV@0}`!Z1+Azy z)Srm06L2;|EXa*9jnX6J*pi^_eun=5g*2NG(`87p`7vTxRgK)Syk)P`+%^0HklSlh_1%FTN~DuQpqCY+5+s3HlX)QDeR+N ztNx~{yukdEWWj~H0+JBV`{h90?I%zED^#mm0tbm8o^}z&%mH!%V#G3QbJO@za*z|p z8oaUZmwe}G@yDP9ulU-b`wdv$lU^d*fuD2u)VFXb5TmT z$c`g|BFk~KT-#rnMwCeW9m|at#)<5%K3fytU*kzJmpoy{#lwbqQDc%V%pLS}zLrol zZQ{B1OSB_eB?UzOcFCDH`4?~vy|p^rHoeX3qNyZi`6b1|mnvt4BOX>w7jPB>rtALz z3LT(G771jAX%Hvw3!_Nd?e(zrtFr8bNgT$>B!CnI*a3Ty-|?xnV4&p6LuW41O({F&N0~|THNLWS zQPl@bc&e5OkQtqhCE;kXa52atb{nzdKj{ZtiGD5ZzpXG}>yH#@eEw`$a*4b^mgKWf zV$Iex_zvEb#Eu$ItBm7E9C2ae=y8#@;^W(2-;i6%{{ZP-Jxw7TP2<{UX<7&+0Zv(8 z`>c=jV;~>2pMcl-(-1_4NlJ{EmIasH4;ugq&uur%%VBTj>v~9MYQd%1F-dZx*TT10 zAr{kl{{X@KC}0lLOET|{U9c+t?Kf9(x^y3^rHSIg;B^JKir%Tl59*)LOeWh#O3mN z4jO6LX?ShA_x__`y@d@8Wa0kr`*JjFEGb(b9x`u|iqbrQjeL4&&E4ByN|{T^N|t^I z*{V@;ffASTbDLG|3ct#)1Ecr%hoV?OC z-bObhn%3M3s2*k8D-N2~Rp1VQ9u42pZA-|!5rA#1l0O?pLfGsC+_1lDnQ4;%>4lEW<{7T2O@rucH7v_-@U1&C zQ4TzL4=ju!yLOg0xv*sf`ks{V@Q{Yfnpj$1CU{{D8N68x;P{oS_g7L?gNs!vPDaRr7u@nn zm)ca!s>LH84L|o(wzvw376yN&&B={sRpS5!{HU$ts}yci~ECE zr~rkq(YGFy``~G0v%+kog$jj)ObTSW0L&2q_qSk3?OeMZTjX%ZmjfnWr;}#kEzv^~ ztWkeepXFP36)MRD0!$-V+8E>5$iI_0A4pd=;SUOam>-YY`_^3P2EGJo4uiWTc=uwsd|Kv<8rxJ zC1u2g670kVUCPQqU4>frTORt=y=n3@w8xJ!b1KeQ3vYSfdy!x)&U)IW){Fo?elAWd zG5Il=N01DWu(PX#(%|;Dr9F05e1s90^SJ{SDxi&G8cJ-;E-zwN*RZWW8cP{%i;s_w zj_|+)OvQJXAiFxB)ZKOT6~}AZ)|P2k3^yMoCX5?{Z%^SvtR0oKq2>~4Haiu_KtL*N zNIiN`pQto0KQ(b;QIelqjJt?NCvavKKJKTf^{1ggi#(IIMof*7lKPVUe?RH2J)2#P>r{!S$K4S!DUb~fhqZnJvPH-Q{BVVh z>`a6|j`v}vpM~p5Ac{@O%8Ri!i?YdXoyho#XibC2__7CAZn`qf>s`Q%IIq@^cqHFny}KN5MzK<66~0j>{0N@&`#*_S{%2E!2T) z5vQ#-j84n%nH8Ky3I70dupfZ!QmQs}3mBQA-MD<}_7^{aqTB(Z;qU|H$DcHYHADL` zkgTo<_Yzv*i}ljEHf)R{l8~IdoMO=}hywB*0)l=Er%r;hs`6Mo*-pwM2vz1%Rf!;< zZOF0HTDsCjW>QT(ouo!1VFfLv!Spr1QY;XeOOYsPqY@+$4amUTaJd&FuUby9DGTAb zb%7*~bOJkq(JqQWV#>GGh1*kVS6+c5NsH!?GRm!wBw|NI2Xd|K2|9euf5N6=6hd<_ zv1Z?k?Y8d%x48R;+q-un^-$Q*3-T=+1&zs!GTl#8u-{Yo)vaP=Z8(1*Dkc)@j6vLl z8~bhW(^{mUM1FY{_p1pNEpX!Lf9SJy{{T9)fwQEJQx^Eqo(Q88OCo|ouHc}xx&X%1 zbrS=c?p69D>(fE5pnr{BR0;-3p@}`WE>*941qAdX<83LmAa{-xT?r?~7+x`h=n~w_F#$oKxZ`Q$VENp%vv%CCYx-61%`Mzb{ zrq%gdt+t+k{{Sjls^oVl<^f#W#;L7bdbixZZ-rGqwo}+*aS_mIE)eO1E-~~ zYdrEZiC1{qw%R^ZZsT2Ppc*LIqLl^OQD<)E{$e8lO0_iRbgwj_u9ntI**M$5a3@`8pE`uox#~1 zfG9z=*mt6pB1Rs_aL% zUtsnNQ~e2if-{E4VZUXz6BVpU`EU6SwNf}VoK&xmCOnw($a9b+QXq+0!<+b#HkI9Q zes7x9%eIaFgC=P3<9YH*Nsc0(MR?^RL=usrDP3CM)mhni7#z~%L6Eb&Y=y`wC->+@ zh->u}l0>i=c;OE?;ZLF(Tqt<+?D7-S5F-^dvw%R*D@ zJDZDH!0Yg8rqef?*?XEFxA^wT#fB(xrOTaeBFo4oEOg#=@y38jGavODI#jCaN1#E) zOt|r5>j_u)bp9yonocU!D??`yI3pxq>qJIN4=H;zS(LD>dtMs^ZTse_Hx&;J0F zYG4lQVJ>%l_gk-!ftTrnR9@^e(=%!WqQ>0CRCGjSj*xBvWWH zQa4;|VcD5149!ySUsBeqKL-u>UMw<+v9WS9vfNs1+0Y?T=?r(;qv2Ba(RnFoyYNSm z_fAofMlT;a$2OC^j=pwd($WECAD7`%^V8I?@vcUBE^1~#oOEf5mMMl=nG1J!Ix~~k zTFw2s7QUUIlfS9^vRt7pqD_`)p)q+QjQXmbHTcv&yI(@r()D2}#eLx>OqoxZ>onTC zDuHi;=ys37vwwfs(S0hMr`ufHGratSi6olL;r0@KBoR>l^}H0mr9BA$0Q*;tMq`o5 zDwa2U&1;`iX4KR_x3JNDYI+VhZ?t2vn>sePOdw&VVydn;Z@fBUEG^uLD(CQv>IpW;nl_}e{EALLdz1jqa5kMqnEhF~3m zgi9iTpbHW09nQ6O`fV@dXJ551_>pD(^O(epd#?<8_bD;JQlW|57_C#fd2ZzgGA;Wl4J2mEMqBzKkq$*r{))|EIa*k=&gnY*o(1wVq{PFD84RJNmN~*`)>9gbwa3S`H)h@i+$#z!6OsgR zhTKiJ0?H5R8k)+@`5kQA$s#t~nHFur<8WJpYxV+^dJ@jhjgUMgV%UAgMj?SCp!K2! zYzJfD;l4DJO)Eh%m1rUW?U0*-H~cN%twU~b2_{#{Vpcn3UBl*$1*{3^PfEJTLI!yP zWbO)2uz)ldKb2bGka<}~n|F? zLPtJl7d|jp+i^Xc`l^}(xMXC!g3>c+{!ewu{Cm{2n4bYKpiFTx<)X^hSh2$Ha;K>t zpPfyy-~zGnvjlHH87A=Yn6qJ9NpS0^XwSI*J-brzo(Cmg(#+AuQa38ZBDhizl57Ar zwQ8&|(H?d@a>J14#(j>6*V*55ZN8O@b$Rj-SVw^GIv|YYEQBmFz{@9)xZR-8^c^iz zW)Mk(f@a2$<0Hf(aB^aluJ8%9qaQ!u4P|>2mP_WBDY*PxY#AO*X&NyeJkiHyW?~f( zgLiB9wR1X4$mD}9c-%RiL?%{@?Vbe5e3%1YUD7ZXWIAc3Ri%g*B5b)OX)(X_%L%ta;_$&e&ZWA1H%edSKQYfgy_)}>{0G>GI7l`e;-1XN{e{bbb+>I7EbK$u2WNk3wvTuP1 zStkbe+6TATbuCk5CQw=0NF}hcxJMU`KyQ7f#8%q1z}q^7 zauys&V%mHK+!P-Bu)Wxhrsqn+?<@)9z@IBC#?H~nGPI88Rzw&5!cTHVX0{}xXC%vs zF*005aDm9u_8RHf->qn}jVWklf=Db6@ce5gj=4CImN`6&s!9If^ggu7;C7f}#djg` z`$WdZ{em9Uk_IT|!I`#&dmnf1Y6$cO+R>C4XMamF%+ahwhP%dBQEPO+;%WPV6yzt2 zIAvgN7z_J{TT_8Zdr9>O0By`bEBN|WYYesuicE$gS!eDp3fOcuKjl>dCs`Z-4W2S@ zry1{EOqesiT%u=H#N5SkR31a ze@e87Y?nU|6ysvgkd}-6l?uC96gCYbj-|CWth-q=8@XjpZZvSbWf`v4z3uFA)pY!b zHMLuUBxIEwyJ#dQ+k0q6ppVXr3{WJ~=0-33x6pOH&riaW;Av#m@=?Ww#zhV~9K#CR z&Ysb|m1t}S(Tvy*7*iXFL9OOqL45l?K24aL(-b^fa8gp8o?BQ|EZVj4{l zkUCrXZBVE;U`YJ0mJ%q8jO01!Va^75L5l0Cng~240VfpqI6-vY427W?j zAV_rp0zd-x>3_ntTF|5-318{jHg1|cgx_MZ1lW3y{nakH7&cr{MC#E<(?r&^huR1} zpj@qKQ80L?Rl6N*7!KAgrRtgqCQ=y|G>|AA&-D5ajYMP!u1kE@Hx@t3{3(PH?~?mL zA$9hGZEp7isQhZz0y{Dvq!G(^Scx$J+9`ca$HvqEG?ycw-2MLmD|GEvfG3H>s>WSQYR&$jQ2uR{{V=m83Zt$itOwLmi%adJI9tt z+jM%l8eYdysOwJ1M1i9uI?1_xtH~t#ZXk;_75|WHYgHTBA-knfD_YpHBQWi!~ z9oO4?YC!m2si6*76<0k-)OdW># zehxm|XO3v$3pQDr*LS_dW4eyrb?aCr>{G!OapM*UWe|qqbKT52hi>?q+sqAba<@=> zSb{3+N6hdJ3LJ@~c9o-v` zQ){F#rbCY`iI9bcsu@k0TzY&etCT1>ic<1eTp$NhKtB_6?Y&b#brvQ{#4>`im}Dq* z_jxbv+6PM?U&@={5jQYA;vPyra^w=ZQK!ouKo@c?&`3Sw^Q`sb1+pF{80So}CEbKb zAr>wHc~MIeK2Q{&b!`O6d-rD*m-g=~n}Y^RM)=aj3&^ZPu<(Wrb+@PrZnr{@*4)_Whl8>AT@oOEwJ>;zgMh^0xMa8d2rR40ottr(uwt3mx9yjTVNC z!X)HzAxtq9vGXSPOOna*##D{64(tjK<5|~Jb0Gx(0Bv);Rxtx373T7>CBg|Ab-kA7 zKmqAnG?F^BQg}wezqmNDykm{xa#}KkPcyPdJ2mtXu-qd{b=ogke6?J&wP>^O3cq;s z?{;n)IWePR_}HxMB2P`~2k$WTdSB#Fuko%#+@IgMzCslQ?gGh@BPMOVLZe&=$H4%s z?e{8*uhVbHp9}9P;f@({Off{;)-;VH8;G^r`u_m`f;3j}BGUT7N$QCHPtP=CU! zr9g^Kca(J}>m?ubFkj z$nzW#HW7`5)B?mR-LJ3XR<=n!VUx`Z%mLZ7rk7*Zv#pXY**K0FVjH%G+$+V`TT1BLOPM-skeYN^&;HcZS;F`J`Pg_6?yr)%yvZ10jaZGa=d{NZ8yIxnrln zjVXd!1XY$fyk&}9oerCa=UOL;1ECRuC3yip<8ggR8d7dv22DJ1->tu)kN8xk5LZnk zyMU34$!@1oJv!G_SD~9bf>>jc?-I0R6_axj*Q*P6rt2#KCmC4q#HLJX+F;fJS#5FL z{{R|P*yb2Gd=N%5JZyedX0`hR->qoc;7BT5!d(~uCQ>XSP@7|2FLU!T^{MNSf-A4p z@5E;y6X29BovbgY2l&+`3m_P|a$Lh4GFec(q`N=6sc@ItEm39e2Qg=5yoK={qmvwa zWlIZ3`nUEb{pvbLAdB2gDVG)U^WlzNsHq#rkg!i4`xPw8zzyX7cA*1tzr6nd)S&BGR%9BQ?qp4;Eb)+7c}uEaI22g`q2 z6LKgk^6wO=xe%;Q@SiR;4#>AU3xY3k`jqvinsWeh`BKS^w9UFC+?crNv4jNsj`-VB z4ZUjC87FP`FG^s>mai$g@t2jSVk0pRYZW#tbE>t5;0WnjHs2y7kBiAW zT&!~?n5wgWf)k^m1tE#BR=tE*{@iL#d_MzMdK>H6hzk11&A}tk)_qy8X%gno3KIs_Yglg^tPkVR{AlVV&Rdn5Fq_-Y zIW|}Tuuycd?|QF}L$nW(mo%9w1CbO=5<;Ya+qAL#Dpg=@oeWt~nldGrEyP+D3L1$B zIfF6bnUVA$^cq^!I>;vlpyV(z;b?M^Hvzaz*9q&7Z68zUvf$?b7|zZ$2(C?6&uB`!lYB0D7BOHEh`02hGRE zot8La4u9Q=1()RmdhfX0M@v?ePDo`e@Ps@}Za?!rm8wE5@v+D zc9+nws^|lAZ4%@(crMR?%6vP3`54~!?l)>G8cB_^tNzpI;83NdWhWu_`;oWlvtM=B z*0gLw%f(!5$#LVEGGmB~O&#{IBhd7zzz-a;?pqS2N`bA&02`1`d(s$-O2#O_2h2jK zTW&sp{{R|sB#|&!xA|9OqTa?A>)QQ|Hi7}fFD^>Nwm~ad3y`aB#FM3~L=b3x)aLQ{ zjysr*GUtyckd1Ln7{EsJLd4VRem$!@ zI2k^B%L5odBoG*b*tqCV;jL#{$gBkgIQ{Uk}QF`Olc!rbQ3B|wJymbjT{08#`QLk zGOdXYG&`7*!ap<ldz9B3#HHJ<7)>CK;3d?i`@= z2vbRMrirW>8>21%080*)wyMVhZb~j!BO@m*b2CwIG7=1VeS6_@K{)i z$3wyO*#89dyV}UszDc-(@pHh2^ z>N}|;{RW>w{DXObxwg~a(vG6;hIvh{2BWnKqIWoEAYVlXsXZ!^7jf*}^q@PO-Gh<3 z&ui)FPB2e#q{)dik-#>&zo$#ksNVv6QW#H+SLe9wbwA}#qbKD;^JDf5-;txE50w`G z0B(u0(s2YHLl_0Fr%UwcYc1N#)qcfZW+c#Nyb{LHx-d3xLT~Y{Q^Ad^m?l_NCUP(D z)YeYYiE0@erGo%EUf<(XnJpd2p^cBN!Td!e!J(BmA-J`*wGHHG<&*Zuz@PEGH1Z~h zq)UI}<7%YHbs);bSz;*1Znh8UT5G&BJyUlgo`bz@XjaL< z7I^3;Sy;#sVq{4q9>ie6%V2t3deruFf#7a3M%|aZ4>U}>OD)tD7Ti?&flF%R&;l~D zrb(j6ZJW~S4wqnc1dDvP=~=4EfI!jBIb$Tg;{8i>0lQdJb@T(gkr|!R%Eb-gVm7UZ zfBp2<0GvJ;5WKHo&dT$J54G1zl^wbeJt;+l$TYqaBky$u2@NiVTKx)v+N&s1a8L+j zRBNgL>3b7!ea%fgiZVqS2?f^71;}Hqudn4zv9tve78@9CQb8u#pGxaw2B!y`lZPa+ z0RAz#V+4657yT>n8k*1Nty+*(0ggc144npqTiQJZRjKGe^P9vMpuNHa)BgZ}S}TS# zh8{!;p}wRy?l+>2pZjZMfrOaLZ^@8s@@TCUz$6Q3zaI6QU`8aB5Jb@cB0l9eSF?7# zB$UX>aq#}8MvfLlVl0chW!Qd@-!AWk4S{sCMleik3^B}$;$n$-z`cN0Z*xrSEpR$k z7OI)#69Oi9Wycc~$(|(H3<||cp;FgpU34d}qe~Iimqi4?Y?;!tMKq2u@}eahA|+&2lKM#|%YfT@?HbgKg&rJ7mJGPlCPhXaz^?ccX~U%0a+$KmnEf)D<;keCq!3VL}Mbz}NeYH2Ds{EMw*^t^xV_u70m zFj=u1n9XnwQ_jXX7XJX#5*4@R)t_T^sT{W*_WW>5$3caLgCUjjphONmx~1-Kr>*K; zpC*c_5U<+*0A^%j$-fFXnjIOSW=#&Iy7sG5ON3F!_8gP382Kw6GyedzW(~cR_tUTA zrBcZ}2Fv}ig9<4570<{_s2N=(F~rInw&f=0T5kmMXL&ERxi#M*%*M+ta@#*?iRyi) zLf@TDp^X4}xh^@(IVmQh-anP?*5Lf6vviY1V7Su z@D~`kNmZSKjmz>7HTK`H#;GwhPlC(hWlcPa9T4_C!2Ieh$xDJnAdSum$k)iONxi!$ z7PU0e6GUy4@-LD!bn%c(XGUc@FcjT#36GC7B?HdNQ9$t<0<1d#KS>?UCJBViJ2GvF zR9{_gQpc}CHK-Un$&#u`+h9LV;iu$kg$EBLrZIh}k&OrAO(8Nl_7fiB#3)}GBGm)5;5gF6szh* z+d={URdebINm!<}afh7- zOiZy6v&f9YY7j={Q6b#prkdKcTmmlnpS5G=XI!2LBeKUMWkNTEl6WHzkhs?yLZ?6p z)ZWxO$j?79mX9A`2guxg5+{r+IMI(6O{jD;Fx8HtT-m z>rF8>caS*DsUZ4jn;terieDoF0Txo=+TN#1PViDmjfSwq33OQ^j$NK@RknlrY?2$+4&^^5K#!mW`9gZFb)J9c!kK1dtS8n4J$=(J>Cos9jr4 zEka`>U{rg7TaC+csRyC_4O#=Z4j4%c>my0+5GoKCueiPS>GIpZS^%FBqIr(g@x!z% zg5|DlV`6`(_U&2hDxo=ZM(UI93y?o*QGe10vG4qiWmVv(>E2Glmjw_NpJ#W*4|MxIt@!#ABKMlQwaSDniqHl#}IF_Qq57-8B}d zcTp&COgOGYbB}`tDaXvrfv1lNwy9WJKQ{FYc6*~;;X(KcVkE-B&%~Z?Kahwn4qM}9 z<-D3?6a=yeB(bqz*SHomt#pvjQ2SRLWkjEBhlTNS&P?2f0}FBjIpbtk2*0%^I_?d+ zJCHkjYE_+vk3Zxj%p5)oW0_@^DG~_eAy!r! z=4a&@G9={TEj9eoua+X&4{vI@ZHv@)^{%S9Zk_fOp2XBoD z12jKxOOm*S%M| zk)@lAiDig8$iZz4mbyLf`K>B;DS^QoI8|U(N$coqX8|EnBrA_6yhoIzE5=5Qr?{-M zAtWz&^i#aJuwOy(HDwxZXC5fAAjsJ0@&$4<=tjEh(ASx+do<5;dS4X#6cNiLt`(+d zD%J$CI(7EfWvY@qudM$7G#3m~`3NjabscmS&t{T0;(@INVbPnUD&B5~hD=K*a-MMemrN513 zwJUOMt-8z*&N3#=GUPt?Ww6r2Lw?ldD#9kx+_B`0qecnV_WWv7GrA%x?jy1P05MdV z2O(~$*P#AdQ;{@Gi*kM(;6psDfTi@jO%95XBH*Uti@=lsN!KmDzT?Hsf(~Yh8Me z&a0>llJ9GuX4?aOZF+8?MJQ!v3U1y10Q0L#L@<&uXO!yJV0&D4qpR=)&6LiOJ;2%; zKWY6Zx9~KTU=hHXfJBV|AX$yHzp2)apvI3X0gUJp0u(}~Gup%w4b&2T6fqq;tYgUsxOc($0pYJE&AW3g=cOgAa#sQ9E+A*v6lA!zaX1PyDeS$f;ON_~J2>vLn2PO_0OA21i%8&Bg}B)AC~8QiMK;Zd9h zdt0uA{#2vTehG40201T|%=cxp5nw>;r(=GWsa1YSk}Qr#FJz14D3Vw_L|ifcrN2Y* z6;+}`;JAYmiJuJ$6OQj;B=bw;EKa4<9Zut8rTY9UEw*WbB+bOin;rQcN=I`Pzfa^u zJ{uqwC3fJfZaXc8be0}od_VS ze77TT9~!V6F+!Jd6~_47jT`V`(uk3WOwzsOV`dtmzyAP>L_)xiUi)${xVWw+JXOcO zTB5pQKG@>MN7a0YG?I4tnVY9d=Gk_4YOEui@g!i)$?`7fZ*h%lU;d}E{{Sk@GghRh zPHiGCc-}P~c9G|tmw&{u?fF)fQ^}i^z)u&IpPM9LU?c@i-zAgw><3vcZTV7dAtc$j zg9<2c<9V_C^2_f@W^IVXceNdc>Q?fx=H(=qvZ#hRm=t)L<8bv`*n#-cZb2wBt@ei| z@U}!VCQi$M5R`k4%CFS+wK)cg7^iIfH;vJZc*NWhtVA`edyQ$cFbU$936^LhFBHbi zNA(Rq3T~;P*3b=-)5?-N*-=Q^y={AHY9THPme6Bk%n4*Wc3a0G*F)=W)e>ACtIX`L zJ%Jrr2x4u}>qrQtorHw9?xMArk87(Q}uYIg7qizI)Zk>%w7=I1+-VSb7S;t;e zRDdO0?%ctwJu40ST_QZ1>Y}kPBMu%uB-pY=krI!(|kn zZ}(>fi;W6rVZe~B#4|x2?Vjxsg0VK&Mi;J%T25`6(o&4faYD;!CJI5YLJpSKQ_y}D zPRB9U92n;*7dJ>)ZuYg9-=(d3R=bbKkS!p?;~X@Y<@_e$@#A9l+oi7d_f`(}T=FtZ zJfN`*Rb`AY+!@8%%dXpjdRNXx1Hab1Vbn&^UR%8sXu_KB(j4BD03r+K30r))<-b_%^NcA+QF^RXnr)F3MCs|GADS| z#2)vJm`NxP4^o;`wGhOC(Gi8G4Eg* zLa-x2e)~sr>0J1N*)-A;-X~!!ay82f+-w@LCtL3RRWamJH_&Z%X57)kZR(_vAtLt= z(0ppU{{T`;ZXcMz891L!gB0kZL6sXQb=kD)3wxH`N2Ou2MVfNO!WIxO5-c9ASk60BK}#cyc+=+;Kv zr>3=AD~t^udC6unX5`~R46BXge5c2ifg)y0Jc#I{MiwAi)pdQ4fM%90s$+`o5CZok zGb#7EL(=^%(@GKsX@1kf$q^n_cnL()kIa*EDl*&^SkJOgalXGP_}3@cvi?4xMajhG zXwFtllY598iuo0kTWrJn$UVB&b;k%rB(Ap#jb&?%zlZe!T@_3q7I|fm0K~8z3G1Nl zYeaz|^5ZD+pwsq{-|-isjCMycnd2@A_8V>;MLZDBoVX(FHPjMrZ9*v%q+!pCe%5j9 zWz^r$d}}r{L(6^3$mDSgjVx%$upBBpB!G0+Fd&^Lt?TU?NO%Cb9mn@dBf;(j|`&w3|kS zfxqyj*lwdX7nK!D6x^kEFHujvMG_D6&3~55U<+T;udtw%vBCLG_L8RB>r>bo3i?nO zIKA}zHTYEa930P$yLO$42lBlN!0HZRw1J29DLu52)4-VnEv|_XRrM#2IJbTYVe@m^p`+aI%XY?GLY?54%vN3sNV8QLF zC%^u5=K%zAUO9H$0WOSfULJTBZcaFo%yT-hqPqinl~PkK<0LbwRL2#pDc!%8HwV(+pT3D48|da%)w=d9SlT^u;>A|y55wh`hq1-3dSROgr$w# zGTBo70Fd=QwA%C&V5vM|qw%HXR@8oyFYUGHi4P^8A1qiBJI)e9-~~A`d1F;?oz_2@ zz8xwXl?Vv@*!T#jnAUkWG*UYdcM=GFg8Hb_twcL>;AE(=Wo?!@9j1g2G%ojM1+?+0 z(U{-$9Vs;*xE&|aW9Q1)`7I18I+9~DmKNC|TkRU_)KI%XZYk*)KWzk4I{}Y4pvJNfDOCOq=gPtRXxEaXvhqyU@z)42Hh?`6}Lf?yPGj$ z0BuVE0Q{}n@Toy3P(uK}pV|~|MP@c5uH8Oe-lD6p2Junx?aVGrZezj33y`TVzCy}D z5eo}3X6R~c+!||A&ri(cc^L5j0OcWMpB8IE;2{bQ{R+>ATQT$QW1qwk!iYxcG_Y&kXr%C0_FX+j zrn>d(#!hS40|S@Bo_O({0D@m^hzTC+dstu4)jdffI}lD#303{4aZ+1L_WpIs)H7u8 z4+cZDunX;2k&yasHn;K=T9}cm625$bKPdpl9Ep?-RQigZg*y)_UD8^I3#lr)Y5p}$!zK$C#>>mYizgf0RQXm*?p6S5rrkdZToj%Q z3>f4<1&LOCT3(YHe%iKQmKz z3jm8;thC!O_6fGT+!Y#vR!a*rX}NtX2NF^$rp8$via1!527e(WT$}AiJxLX%ZwQu% zW-}%;#v#9nn6^jg~oY7C*^5&w$7kcA*0Q6 zGglw&t}<^kLpDUXxfv5o)&vj{*?yQCIU$6l2(5Dg5z7g=B~0k~s(9j4=GBh^p4){_w|lVwg7wy01Q zfC?2tr_1>Ymc}{dvc9V-Nt?|+N)%@v%kEoW+5oWhs)42mSb=V(P3}istU6N@8g}y7 zELLQ=mBH1`?hTJiE}B);91%B>bt6r?!T$hDX?hY7CM?oMJcOSfg!&)-^sQM0&hllN zQ3gqCNn)XZ&~4LC%8FwHZb2DXo8R5*>sq2tnTUojUw8P_rIGkJz3+OV9O_NF(*wB} z5UM&T{{R}4hQe^pF#)nwo+KlDNNmoejmjJJn*(BMTFBE5&cfrP$%!!9P$$FknB{2X zKe!o`29C-ssxA(+Ux5|4;z(pkl>6glU^LZRP;NBo)~eaSiR8u+atxOX2$g(f>MYug zr}b1PC~TRrgHAkT?`t$n!~%AcxQ|bVdd;{%$r^Wsly129mqDQ{$52S?Qj~-fVSQF? z8CaFlUe2e5HdR02`{@d+pM*2{d_p&OY3X`7&eU-#NT<#+H?) zG7ogVzy`wCUtkAaDJI@fq|I~b%HqVC+>acXapki_9rpW6+1*(cw_f9Ry#-xWn!~_6 z9Pvr}wRGP0~PG)uLlM+0w-7v@u~z7;iYU|?K+Jbbq;j|^cFOtm3WFkBW+q@b}E zw{G=zyRBPegJYA%LE(!oOu3kD2_o+c9?1Gd85&(%`fJbm2`KY8+ydpMm5i?@-D)iqZ?{5Df_EMP*%cUP8n;nWY$Qi^_lju<3R0x~|kE zpji|&tZY?DW4BLezJmQLMBxn`CP|HwT||*;pnj9s{BKFAC?zD3!l~OH&`4w z_w}sZM2K-^V=6O-yG(^7Q*PiL2VE)MVXtFNZY;l3eJ&o%yleY|T}kdp>0T9YDW68_ zPm_!zorur^gah%?lCVHX#~YN}y+oAGOcr1VMI;Jsl8`L;l3mpqQox&#PeKi?@fB*z z$U)j-M;l1$w(@Oe__o_#le1vz5+fT{`dn%GRJIUzBnrf7)Y-o=O12w7PYMvNqPr+t z`s_EW>?DG*;@u+- zk=;~z7fYtn!?*{b{!}rfJW<`cUdK<)lXx5rJOL0tXysNvhT;DJofTl#4mr$ixJ*W& zNh7yIe20Mr2UY3P4N1OH( zU7X{9j-fX!QrbuW`G@rZ`TqbayX3^4R`OssnBH>i+ms8ENAlEEu0}-i2FH$N1A1uX zf2Xzo018QX0#NbqM~Q7U_aFx2b?@G#CIlNK06oo%v0qSIxW8)FWKa-r*5+T51Me() zSxt!@{{Sk_xD!Ppc&6F3L%BlBxAz9(R0V7FJxH}KqmmzQxmmw;K4et^t~>t#?4kh) z9i-nC`Zn;u+Skzk02&&MiM$m?HZQbwwf_KxdI^ws31QN}6W^^SB6w0p$T6OzT-<*% zYKIUsa50FO?<;LdecIZZw4pN73MIyk=VcEj-`ZZPE;`n8Cfe)dEA4z)vw1j@OktCY zjIAa@k#KtL@@g-3?R{zOx>Ys$^qYGk&p+(GJ`8EHXUk~T<>HDxLf>7c{dMVB*L|Sd zW{Rn1d7dSKqJtE?gf8i&)F1-n0r=G{@_FFw%!wA+2xYmA4^>{I{%2aTK@$)?%D20F z(XM_sJ*Y?nBhP_%ki{hi>J>o@En|E9yGKgTqhf#)B%y7(?iR;gY)xwk0X%qe_!fB) zl^FiRF|c5I?Hzje8dO@)Fqz|v9Q@4}l@{Tzxz)w@Dej~CsuYZu6{E(HB7X^h4d)_7 zVicZ$-{VsM058-;kn{26;IA2zj}(!|zri#}QfSe!GfK)_$QY%A1J~i!rVv3d9`l^#XoivyBvN#->#Y`qi>?`~+Dr$UWE7;Zm1^jgB|m+)pfa zMV5H(LP4<*fP-^?M1w*}>C&aurzJ{i3jF?i@9sUH9$>jpu8Sj}a7Saf5NP~Zl%Nm) z0El03#sqR!w9p?r*~<$mY;kD2kumoWNeYpxt4#~CZ#t*d@@YN-&| zTuYapW1Ex60tip-KrXAN!@Wa=!Bx*DZ=9W*lgeV(EazKT5IS_O$}A%djrL=3c#}`a zLn4bTY$U%xb{qHjik-KFJ#=p-{%&uS5|-rgVxAd06ps4(71FsD&r@fu0P^2%MLs&@ zVNV)k$O8qDf^2_9WAh5EFC;?&PqjG)Pb_?vBTm41QFj$8JCz_@f$3DbgOU-&;v+0D zO(B!3vWq6}`y+3Zeswm6#-y>v`*V< zq_YJGO4`QC3lY2G#MEBURZ%>AQbZ8sW=9ON08<xP3-c5QyQbC!CDOjIy zw%|~(x}Nqnx8Q2KF*J89O*E~LISDXkMg7c@=V3rUQk@AErCgC^1rIIA9H$XvA9S)xlcn|oShQ-JcChrPRx*eCk;h@f#m$7WEKu?In8^U! zV=hKE4m@nPBIEt$q{LKlSUiva0Kq@G^9n}zOUYsh0Ux}KQ%O;}6zB-+Ndb-fYYr|; zm&L<&*$m9v$-hKKbJPBsEV2f-kpAD|!S+A=^pY648FLp9VK2%&?HfkQw%pc*{mbjE zG?2(R>^>$5Ik(I3;rOs+n*$Rr>}3K)jx|y`w%>5D)Kan%BE^dpINY90K-n)Cm9hT- zZ*DB1*a*t2-H2D!lyp(n^s7%G$|(5r$aCw9!%P1FAhU#)@`Q-)AeZuVU)yV+Z);YN zDLKl;#Kpk+8RE!?nujt}o_SqPBSNCfwlFtu4XI#kR+WI!eWAnu0Bv&d`3b(_<>reZ zD*X;DSkk`TR`c#(V=e9qwX8Lv4h%_Wk0GKG7LGZXL{6KT80}&|E7dUsW#wh%$&)Tj zfuzfSJjFmo5*yrwP!wDqfL3w|kT`#&lz|DQ1sM`da;~xo z5>N;#$)W3QD!?FcnLBc#%O6KCAO8F@`(*MnqIiOz*Y4bJ&o0pTxCMHs=ELiQ1(>7hymqhW6v6KLNh|{erKg6Vgpy4?PV8WH6-3EF$(#sLt zjV_3$*vIjya-c@IPj19=|w%dUfDZt<}?f(F{AB&zqktrE%5t3F= zUOkU>c;DxZyEfBi8Zb4Y5(VdZc{v_?FOo4VEj~j!<3fTM6nwT+T@;^%SctYVOjjt$ zjWAFZ2J3)6Rt@M!OH{Fq=Z-+_Gcc7@2-!BTO$MFChvicMNO?I_V+07ZLw&gd;ejUL zlhaC-OoWnP&iMIExcNa|_71wG$o)45@~GKaKp7OvAc|LtHO*Ha_YLokP%H zcwl(%Dx$AeX46lb^Q(WCy7Ut-la%`>8d&fk$d@BIR2eg7K1iNN`HH2AZdD-mu6t^? z@{9^mRnB3>A0;GMZ!Ub2dm^1|!HTHe@|~k*>lL@gil-9z7qL^3izYpWTw{9!;9krD z*W5bwtre5tQbm)*<~zkXjEq*0ENn=-YA<8oZ+g1!Ts}b{JluI^q2S5Sp zYg%0@!+s!~JeRg_=GB(~NgTWj94y@`-PGD$A&fi~TU zL9~|jH@)j*ptKPVYQRL>fhORy4a`Y5{12wIon$16MTyo)VF6@U4yvuUXzO67<5H7| zWpH|CdMR9KRd#|?LNq0o`hGR@)p}kmm4>AOinT~`VJ#HvWs5pc+=SEf*RVv4!u^@nbML82e zF(KNzcOcwrNw7$sNUaLE?P7l;QkdWhY*DqA-zK;SzsbKu0sys5mO-0^T1i&z+Yid*4Ed*T5W|<9y}4Eje~0F z!FAKtlX6rO<-o0tGIuI$J|JGEuO)RNis4;$iIv zTWe$accSkDOpVltr9en^WMos^UdONFRZ%i*WrjuA>fTwtS8G_X^uNbS&B|kfBjk!v zW424(NA!?>R#Veju27D$awn2sETC^d6*hpN0oYodYPbh%jfS3SfMy~v!Ci-7=EKwV z5lZ-205n^(1sC-r)8k#FLD4KYnvE@cbJ^9u5jCay+D=yfLeMh@g9!-)XS; zT-KGD#Ns0urt*s}&w_>vN>8I3d} z*Vxzgnv|Pm6{(QzyKw}uZP&ije)jEt)u&X1STbM;pz%K4fD$Y>EWJTu1#>IjT4Q8$ zQ#Q&+0ZxL^j;yp3k=0Mp^6bVLDl_V*PYcPSPV$b1Pd`Q<`E`g9j|Q>X_` zzlp4F@g?i5+70(7!2PWw99(su3opfdcLd6^9;3()@GYfrcYK}Q7Y1V^faGzW0iKPI z6oi1*8iCf@{{W3>wkA(T7T<1*2{7gJgw=r5kBz$0cPpT5UwHBydJKMN8|tyZ+Z5y5 zC+FF}#)VYG?8q{CkGJP7EOP`ppBCE@`FhdSp*EO5+nAh(+#LQt3&C;koyle~F+`*Q zsy=BYbD|>tra$9b){ewGBz;Bwvi|_|f8&1GDR4P!uuqL`?>vy`+x35Jf;>Dc)W@!Gh||*N09buA{I#i{5Mvrm3ZKv zk<7fGHf2Ek7be^;b})}D74b3)$1*mtyl1*MYV-E%wOdT=TUC||EU&lmpiTUST#J)n zMlLW7v>wi1PsY`f21ACwZN-u#oa9b{E#XptU$4!t@}(eHV?~da2>$?%-3scF#O_>r zT($0Lb_1oKiHkT*CL2T0Z+BPFbuI>%s#Z?|bqmbKiel2MEZX19E=NFn>Mil1p`aJd z9BhDOUN~|tj@qdJ(nIiYoQ^LP>x+%!{uLtwz>gLwM44oqP}`>4p$ZSJXR$cJ zbYZh{^5FSc4+`Wp+GQ6i2SnYgC?NiI3Z?es=ZEA1O_Q6QD2o)RR5BYgpHK~G)R8#@ z`-72_m&A0$Q7lSSw2Ccor{xDt-lnwE6}CyXR3jtIO)x5FLl=-;187JZbgud|_&Ih} zu1UDu%>Flqk}2^blZNCZk0|6wiq6di(GeK?l?yf44z{VYPSH6-Nvg|OWjjk0)3Zbt zAno#xm2cNiN-a|saDk*Q>MRJg;v>QEWzQ~H z#m$Hhr^b+O8Crj~qRc~g+;kLmlsN`m&Ogk^#?g=&Bvm`4u?EKd2Vc&!RA_R5W&Z$m zyi8dHfW$x`y91`0^{rAQ-N(;kav1#9BH%VR8J^hen6o=Diy}LDtfboPSFiG|P|^zK zzVDwm1@N=m6yO3U=fVMf=;8 z$scNO|oPPPHK1KV!+6e=fs6}!H65itL`VL)R4`)@vYMWy&*3;#-W33+M57YVm}VQ z5-O7c;E1%*nPn*$Ext!LAfoiQ$E79#UODjuVX}W@#4;q0t4siS-a{vq z9TcSK;(vj-N@Z)<3yK~#W_EOR`Y1Egez zCFDC)Z3OkIKo!kn!xmE{7~&G5F(NGDa2&*?fMKBpz1Qu1y{JGzn+_xrAjXxZ=zNyj z8)yhAe|KAg4@y8?@H{6a$fqMN1d9`{Kbj?W*k=mrC4xTNwws&wsqq7X*Y3ggg#33O z2N9IRoKPE(vdAHpS%OF6jFYx867{(E8|zAs2yCOoRwf@m)3h++yiWt{RCS5Ujo}Dq zks3h6wVK0AfmLUT5(j)3p~(6*WOaxw_Arv}K-?9S0NUU1sI`O^+%8UByRHSmYZGFT zjW@r;(y?2T8z7oF@ywD0W_Z^yvL7OH(w@4xu zP4Y1xDPjiRz3ACqs!#^~&&Qqd?`vu4S@g(3cf_O~EvvYlphD=O zmB4S6uWfsaes#&UGei*^#XJu3#3Xerl1H%k+iCuunqJ=u&oy}9IYfD1_gM>%fr%at zG~c=HxJ@ImV9lu0O;6)pnYZXc1_n+4-8psaYyvZQe|i(**`wwCquscdBUVic3b14hWjw?`*gHxHK9Hl-sg zq)Rl>k+W{#0oPH`Re|e@-ha1v{Gq8aLdM^K74sKec3FF$Ri)0lzhqctAAAGG+nE_R z02w-7?0a<5p>oP-bwb^CDf|vimHmo5?S`To9|oy02RGH z1V+|pwwD(c{6)nw2ss506hw;x3X^Nv$J6tzbhu|f+*nMio+ZSR7FHrV0U_(x*8cz+ z?oLtXoXL&^lRQJ)81k%R^~HbOQU3rz)K#pYJC|%rkCh1%=gc>waG$Ew&i*70XH}vmr)T*-pn;Q&FGLH3P zvV$@K)b3lGU#sm9D+7 zhm*H{g%Yr3T2~-@h_0wS@zz;v#5)Zv#2&}B4I#*1ADXz*t4Z%gxKwYH0y>(`^qvZ( zp~>}!{{W-k7&t%e*~?4Clg&ms|L}iR7Hr%YB6>-At@*(QXhfTj4^4aND9#2Y({{Yc{ zfaX5mJiq+R+$u=B+K0SJcIj}{j%l1w>-W) zPm>2Fhm{#Pe2id#Sx5}85iPOS{-&41&BSUk>9m&Nmrv(fa6V_3~tL z%@~ZAm^+675l6U#)rmca^QX!iIBbPfP@Tb6-P1$Rem&@Q5y6wnFLQMl3vsj#_7u{B zj^K_$Oq+-sNgDcfy(@YMpU)Q9!wrvXK7!f}D>X+Ta`F<z#s`r}7u0A?uUoJ*-)>B@ zywGEm#m7`xGIAs~WnI>7y~#eFwaK=xmT#e+fyQES{I4AO`9b2wW_csYa#e^1$PtE} ztz4E-$=I@1+l|f4NOFv=1PFXUHSAdG(jS=HrRtSnne{t-EIe$MTu0pSpZ8SUg(CW% z^sVkya&`9%us#OnF^sLCyiB0SDvdWEM)azsWXkr*Nf+CgKS-I}hB%5j4%~crn5ky& z%=+0y`U=*zC8Oyd{{Tk+0JM1S2Zhe%ya6-0Op%Nl``KcEXuG=t?Q%V9vr7DA!(r?T zl%^*v{x(v<&r+lf-9HM{&JJ*SIP!1?WQ+94w7aZ?dsJS5q$xEDqXvr2}gB9^chKAgrD*7FdCu&P0-X=Y0?tKm4^{lWnP4`VAtv zqBvkjEQRsq(|nfPr=SdbgX>8-0r4^U$mLu}7CflfkrZ>CrF6cJ>G;!xRch?vWwVUa z3&$Lp#d0LI;fggPFb{QJt^WW~q9BQ3JYOvaCN?u7?qqTpu+fH~gZP6}4oxX&$UiN| z{{Z(6J4~!hn7d($KFE!Btu^1HH``UQ8HxA|tO)1&{lQRLH6+-B`jj0jsclb#g8E%K zDfTicWjAa4N3Ce>Cp$*J@7VY`GI;2|-o#8!JLoZTSm@4Vc=kxmE%!0rJ;3xeHgGQm zCJ!AH*+MKra^xxvtbS$rw%b!~!mxK>j{gAT8y6>TK@sF^M~WE@-bm&bLc4b=`*qab zsmeekmiWz!1O&k>(XG%IV$rF(r(H;I%dHfc$TPnKwD`)9G;ZL{ipi_7RB5*G)|dv5;79b8>ovR3=${mnH-K=fX$G zGp`*kY)Oz~VypwU)ggwX+(jk_rG3Hn#xK#$jm1qSJpA7!77Sc!e2kx6G-}&NU5gFw zPPGjIZT+v{e(QsX!{lS+V#(n7EN6!^iD=i@_^i;vNOfrBDpyiPB~Kukl>7E9{C~V8 z`kXlV8S(Nsz3YVn#S0kXl4XZz1K!rT{-7z1vb*jcTa){Tl>3X4^5JF4l?FG|PZ*Zl zvC(EJh_W{8IogMJUYb%7n&q+aV#7W+NOIC?BcB59UM-;sXxRM0n6M!Hq*{~`8_DJI z{7g-Y!^e-1gawn3WivWD_ujy5Z*{9q1ZQz`WW=3hF|6mr@d%~WY~xSNe8b~OF`P#2 z^$NvAfxWJdY^6=ESdWxaV?~;Cxv*kQh?y*~Hap{mAV`dk{!~q^eK+fV-KuCPa>^7< z%p>UCHS_|t5kG}hSrqEYa(zkGv+pBB=<@D@R$$;+Sm~{WfFN77O@=`xtoknX`K&c- z5_P|R)uMP2-->CXWrSbG6|6cco~Pgi=`Kb=62wZ!De)F{Unv&~r$*gc2#td)SlFAM zhW`L5w`yQWtfCi;-B#CCO8{Q|Uj20Rqy(7KWUOu&F~llTRld+bHw(JVMV#K<`cMJf zDkPG4%R?ksjMFpZMZG+B*zz)6TWTwA+tl_IK1N%~!>m~?Cnb=WoNjlL1?`01&v@99}Y_!x&LERz&I^Jej?$tgW~xTl8ffIv%=;eR76qcqrEs?G8f;Gjegc zOxdy4emp=5WI(NGfXGeW#VlFJT{XRG?3j2f`CQx#H{@|}{Mnp7S&m3nV0@8gB5n)s zKIV$$8b$e+rAJwWIWp5_&or$pjlGHY8r>`s6sHgVK1cB%J2$n95ccXFN6WNyH6uBb zKO$^Jf>XH@{k<$ye^22{szD>*ar0(HlF_m##*caO9ii+;?We1o=sVQxva3LoHC#U& z!3<{}SCAGMu*$m(Z6O;P*Vg+nVt+ zfn-@jGm;1_G$QL_Z~4}ihy)JBieA<&VoCl$Q%MP-N12j}6=W-B+!%b<@2^^JiG&Oo z08ZjxsMAewZW4gePh`WhjP9OYq7CXj)3 zx!T0_(yamNA8nJ7_Erw>(+<*pDCAen{ly!seLvB2rls_#8x96hatP3O?Oe^|=}3zh ze##O$HNVP}ML=xmjAjpncU3OVO+AIq;n%|`o5DkW3ddPIaCr!4Deh$!1&2}xYL@*5ktQTx_R>ZzWoHBU-~8xr zA~F(3w<>h#E*t!-s;*Kz`*H-t34rUjX+I5Zdev}AAOHjKKj3@R$Ptt!H8%=I(dlgs zQe?D683q{t0MbA|{47WL)!Ag4oLNB*2XS-w5-1NM$i&9Tfn&*ci8qiWjBa4Wdwsq2 z(zMZNxjSiFQWz|sX7f;j5k^!Ga-j{RUxO=m{43P8TZWP4-ibUFz|R;hBAD`U$wyP6 zHqqAJrFE!l!J8wURy<=0uxxp~(R!qdt*!o{O0HkHhe=uSl2)*i3r0smRGVrKrA%f4 zlj7pEQnov59LQT8w^$IT-ajfkPC^ETIZk(m66N6BamiwC2f0Q5DoCQ-exri(kdG55 zi!w$W#L)*=>cD7z7h!EH4RWmmu?9RzKG|_{5_Xw-6(F+(u{ZrY$FFfp*M}BS01n(@ zr_tqQM9AtQjus#iBSF3H zbh7Q%yY}0)to_8eD!HC>gv`TeaCtm@jJ$aQLo5tfu?ECm)+Bn~v0D>r8j}7yM8*t` zZ!;_zvSrPDsN-=Q816TRW;;+7Al~h-O6U7KA4fh-HBmN@SN7xV%pbTi+n(hhAmTsL z43|$FxvZqTjQS63EJR>|YgeDIPAAmu-Mg!VYd^VPcxUk#1`Z)1k>M)H&K5``Do6f^ zAhm|0wd${Cj!LO#&7a*KbDZXIBcGPcenrMfbXVA+HzwPns8FL#MP*C7SljGrRji}U zM1fqNl#n#FiLtJ(xHw6(96V8k9{s<)YYmB>osJ+g{JcBv@QS%LH54p+{Eg2{{SkkuqiqrJ)Yte z>H{0dm=$O`P_jZ!y_ue_14i!it9{Oejgi7-z3 z{{R})Z1fMczS82j`0;s+E*%o&{415}lYfxN&&P65^0}EWJ|x~nRS;rMvo@gG;Vz&N@vSY2 zlAN+{w-tsvc?XT$pCLY@L0D~a&1h9~8Dd<=VBo~Q*unG_bl{6}69*_Waj~H;e{3-W zw*I94b)!&B%RY<#$@5Q#{kG$pRU;yN+@c1hbeI#b#@bh*tN5dy%O{}oKXAvzO*UJD znaAcM6cBCSxqB%#8MY$?x%gG62q=HL z=6*x$u5ZY7jwF?tbonG!BwOLqr+WVY<721tN6nJq=iDdREE3n?}Xmr}cLue$Xx5-vL@0~e6S zbj$w$wvK4a;$)IzWZpL`78`=wt*Of$Tr_U}?*854Vq(k7@Ga(pad|M^!x+#KPQ7iY zw_*9z_w4=7&HAQnk2K4kKR32FMq{|6b~e|iYSy(lWHasWy5r%WAy*A@C!8;V=VBs2 zfbM2R_rF~Q#cck!WU?Cm%A2G(FtOB>T` z0Fh~*i61Zb8pbDzJc(cv$upaVlOGoQEVm%AOMlf^ru>ZS?Z$ZUareoP8VuN_hHPsq zM6*WFx`US;7?%-U98N2IBmY7x+<0C zJPG0_$yxo$`bmE5&B()oOk8}I-y9Q0Vss%uWo13V9<^1p9BNt>7ZUmrUe1W@riak8-n-SY(=M#?8m z`%SJI_CJkav3Pz))(qsbyg4j;e~nucL?E&& zLgLaYw2W`w`U{TL4!Hz{^$!*{=;LFK;bUU3S0ax>a>{L!ktctMcEa$HKJ`R5=F{ zc-j#ZrY4a=DoVP@yKKkXxN2?E)PTOu<9L_*JC1%j2#+TiFP}2Gc?z_fW85#b9lxVf zv|mfoPb2VW@h4bZNFv_x1|?mcP=@xYvXFg@Z`WS+LJH$Cb1~N+lgh%9P8lbU$&)NB z*v)4EuH&^B*c~rXWHfqT_a0G$&F5fdDawX*pE~6k7{xX`O$7Hw9@w_8wD&i$td(W5 ztYWx+XPJSxjPa3=o5^wS^jvlhLJ1jSb!Ci@cB96u?Xd2;wQA8aQ?#u!h^BkV8ib5m z`bBVh_w_X`0mdwAlQWs+5p52@w^GLBCtuaj8gU3kmmLiAoIGgC$YhMHA-%DK71;h@ z{{R}s*<&m*vb>y>n0Rnagpvi91`#uPysnp5MmtGR!+o!y=}Ox3C}v+HE@?{#BuTiL zH9E0A?GMJctzbmlJlGids@eGGD+z-n@C$Avp$N;U)ft0z)~T=|c_ldL2nNWhr_8&0 z5&r;HFCsVx*ieq6a(diS8DqplEYI}&k~T=)qYOyhzQ<{`?tLpA*e`e_?hX1BaY+L6=SPv2o(QC3 zKAv{p545uhHfy{80DX3LO-TT`_|oL8^TZ-y9FFAfEjT~|0L>=t#gjnwO*9eULikGs>w9@^WA>6AXGnCvn0UHoUr(J&v@PFhK zZvBs-{{W72rGBOQ%?Ti6h6Ph*m^4 z&=6_sv{^CPO&T;2a?!M=D3~;ezqoC1xAm{1Nb%&t{lE-7{F0GxsBOn~pn^2F_*Xvl zyLlVULn^RA?g1E+ufC92rCVl1ZP zW@L?`a3w}ojz-ZOfnv5j`+RE(?1my2b&n*;2@F)EnBh8+a+0pLAdgD8#z!WX0tm5J z!}~r4-b9j?V0Y?5fCy4PKb3H7yKZwKAirA%6ow>`K!}BjG2;YlukKtgDRS(*)+~{ z(dQW${D<2dkcTlp?J|k+ji$=uQn&1Tit{#A>)4w8QR(QvdUatr9FK!14(p1RfRpHq+Hi}hvKEy?p(yeQ=P9H?+Gp28b8`JZvnMG9%|?fhwW z!j1wAE=M&kL@hEQW|2ydE9qmQEwA`evnf!=bCKcXLl!)$GB0Pk8|~Y1eL8-1ooNi( z_jXXqY`?QGrCrg;>eBZXWgBcP0n}^Ov`wQ2tumrNv3}&q%9b8G8|p+&wo5QwzlbD% zDvh6Rl>T@zddPGB$os<)Um{K_e-vt7XN`9%Dvxn%6VMCZl|J^HVOUO#tK%TZoXEJ) zH10sVAUXs5wXU15QdL{vGjA#$d|wa`5`Ww)?XoXh?k2$2eQU`}TLKFrqP>c%i>o$( z`q`N*MG^Qqi%&-R>`LA{=__g+8=RAn-XMkIdQ|d zd0C=m+CDe6X=|wD!BP4eK3fwiZdGCb0C$f}$YV*-TYRR0!0H`Cbkf??K1O-h-LqlG_s5BRa6uj{WzlUKma!$8)*4^0S{jtem}YA;J!Q;H z0m#BJXZd7<+|7M`=dk=b)Yo1nGBdvvX7R*1EeJ?Hx_&6oYV#)e|eELk}$RND7R0U<%`Z(fF_ z6)?9ZkC5gjkmN;+lMMH<%;WN{8DsinhC^X>8Xo

cnO~-pKktx#5voG=nK5hanl) z*xx#x*S6iu)|vxF_ZQwj+q`ZgGY^>N;(x4)NE!@S-zATc3j4N;3lr-@+gOPYirm5S zwm&1v@#ryji4`w_Boi3k}JwK`TK1r+Op!>i3c|Q@CkaCQUyNCR6f<4WZEQBN}1+)d( zfRPW&)M;0za(spUoc41GFY5dxXa4d2)cxD`<`B-yd~CrW2QTR)EYKh5D8X2&^end( z)35E)&Nw)BeLa;^$>y@SVn8<@wbXK(9By}u!jl3_+)&9Z0(8rS29_BaJWSpuAzOCc zdS0@!YlCVu)=87^JiOUS#>iF*AQv#CPi#Fgj?w=B$_Ly0=z}*N3I62H&*$O)0F&o4 zr^=I$Mo{FbeUpMhsMAj<7x)^R2+d+*OEi*6ETLhCVvPfBZh!&TzLm{;Lf~FYX>ue^ zDC5GiK|2ETDRwZ*jcYhgia}jPLU|iEpW4`8pZh12;luCcxValIhmJw90?LDO?mCs7 zl!JbcV_MgD#dQ2WPR%;LU2eW=@Mb>i`%~_zWsqda{{TD4aB8PL@VuE(V`DlA51w*5 zN2=fd04lv#tm6rlzPD+1&A-6@>hZ GULIMi<+3(5|F6QmPXgEohluoM(e@oe`)>4 z1|Kc=y5wX)pHIm)ek$q}yqMw6(tUhm^Q5hTTCmSF$il$M=5VpH@_~Ufc&RfTZV5Rk ztueK`7hyuML1r@BmB9PoB6GPu;F4^daJB%Z4D#Dx9R+}(Mw9!WgTqJmkK5csq8yr`yvJf3~Q;hgL)FN8#f8Jl}#XAn$^(oC(P(&K7a4%9tq zxdzI$>IS&)nrQ$afTH*Ik)I!ORl2iU}c zeROMsaZU+>S@^u{Xkj@qh}K}{83QR&FJpUN#apfFTT)X{8=24L=kQQ*nV(3oV32Wq zW5+6_k};Mz)Lb&%w-wM04P1~2`21nxW1Ajbxgf~75lA*OMq0?pU{w2lZFK2M*2n^} zU--R-r1Pfqj<)bUwUxAy-4?rskgCQOWH%E!r*4Wb4$$Btia zP?WaVN|xGH0o)F?ovc3vPcr8_9tpBprO3kn0JmcMiLz*c_mWD008qWF8rm3Ss^xHB z3862sl2N!S9Xnlh)KnSD#ab0ibEC2MHaHLI+5x5)}2Om9t`;tOW*{? ztG(pb%7qJfV`5(xRFy)pM%;$h3^f<^sh=R3Vb62ipD~tla$v>A zk)HR*i6i%rp!o>Vjg(VElCSAyd5D%f1wXj(07BV00*X%|uae-5RuPM(SjV~vGm1@taOzaV{U4e#-UYpmD|a||uzn}4v3a5o!^+xE)F=LX*#n3guW?z&ot3;C|zKbIw7ssC(F&-W)42LV_ z-sU^xF#v)N=Og)6Zw^Q)AwwQK*=}S+jD(d))Rz}SW7M(l($%!tU`!Q|2pGV8hQoTB z?i$>ZJuTja&OsG3rme23dJsX^*7eg+WVoua2qxKiF2+sQB&q44($!XCfQ*=;o;dO` zcO!<|mK@z8W@|2^P?qmWAPvpK82PKk?~%?i1rcKs%y)~jZ9-Q=r&=s)MsdVpCnw3w z(L)+WyV@w(_LAy^1lUck$MOcVvxHrLCUK1ej1*!#Y8b;K^&rM3$VE*Jpdb~pJ*?@VNE z2s5d$y09XN1RWR5eFs{WA}OHVFI@p6;qDrLg9N@#2>uagZ* z>TY%XMK2%)BP?x{?VxC)kdvSm()aYH&>*-&fipMHL$j0y*4=x4V!Cxa99x&8Mn=~J3!?x9BE$d4d18AFYV>!>PiZGTWY)_ZRF zo&{$EXJ&_h$&a>VYrOszYbB1|r@IgJT9tKYCT}2^G5B*aXULWr1lLv_-U}?!+h+Z(@Q2p$`^m?-Kb(~pMTh;YQ2%s zr|a792c6H#ax%Z2CXqllC0W+S{W{ow70k73_A#|dBIY^ia$rn(vKuYjCORyR%+fis zh1agNdbCrv5|Uj{f5qUrt~-r}E=!fq%;X?J9z>s2CygcRCy7H1J9Mt=eT&Z`RYqSr zPq;Jk7CCb={1B4nIiz`F7U}JObz`=6FUZoDbaIP+Bb(#@0ONBc%4IX+$K!p330)k5 zs)YXlRjbAOKVJ4usl=X|*<03pqbr-sWoOS1l2&YNVt$hwab$rBKGY|#rFLo8(u%V% zb3RE#dHFcjg?12$%?C(GaOD{W*`woArZ(4Xun1Me-U1t zoRwKeDLYAauqGmIu2lO&dVy+D2wqDD%8x1|1nM@nqTpSAKaE30OyI1UB##-S z0>n7?59$?la$sKlwk6EU627erU>78k#f|m;6rm=^RBBQ^%%OC4DiMZ+F*+SP-jYU; zdRp+g$ih5+Ym|fy2pLY`kzjO_e|pBv$*M7*cyb?bVe?YrCo!2jz*GrdKpAeJk?jgQ z`c|6E?%7-a06onlMdZ(%$XjbMYw2xzims?TGKG0wUo0`7DdhzFi-kXh?ki5K(9g3Z zizgsXrC13C{pyGhPf)bs1hAQ9$tnZnNZ0SUi|P2(q=HJ^#GRyFvbhcOg3Nk)>s10h zi~9iFzx-z-9y|vt9}hA&mNjJ(+IY_3fx7&c{A*ecPg3Rn*q0^~m4$@djs&N4*i$1z zl?sso_&o(*-`E{>GuLqB14D0D*->BBwQzYUnC|I4t z;y)@R3GwmcXpX`1+%>%^uq2BWZZEC+4@yG|NL0tPfvLEp0+SUUI|~DE!hwObY5*j5 zrXz(w8sCth5L6KY6~1BIQW$2@VR2=>APvEuTv_9u1GZR>SURxT68{DLn}6YstQsR|mbX>{j)Zc|YEt+^qgWSs=rkbFs5e)j;%L zQ}M3NA6v^fzR%q8UQB*&EOO$fCy2XXawEu$f9Xwcl>8s6*LuO_yqqRPQcaE}yG0xe z9N={UN%s%>Z+e@WYek+18nE&R^C>p>2VE4NfsMMWclgvR6>1wEGl7$uN$?}bmmyvw zxgbJVGJDqF8?8;=2vw5%hx-GWe8^638zv+za;4!=qiFUn-i58}Tq?d~*1BJk^N{|~ zrzMB~0BB|7@>H-weef2(yRH|g)7zk<1w9RceS`M@0NnooX5)Rsot=knPDaMz_*gCq zPmz@-;UIqTMm@*yG`1w#H~N)yZIgd-zUGhY-Wv-Og=o`|c~iz&ZZbqtd1jX(MYp59 z!3WmesL@BV+2HE?H(Kle0Fmea0DR+deAgZS0N(!qZbC7!Cw-j%01~$U0J6$&)_{NM zNOk^xwb`cbucf*1?r?6`TUWh*bb0$~Nj>YX4kKrUJbZK?Wk)I*6^2%1k>6?Amm!Tn zJ&l&&)(bYVz0^{rgirqf6`A)AI4zeX@IWyPrI@=;4mmBY?gLb`W(W6YD=YI{vNRCE zhPgOWPmX|qMm#u`%BoZ!kM2^EmnDbyizZn9 z>f?^6W5ULl9r}WvKA`&U8q=%bZ-XPi&xZV#-dxW7emqiS%$U#Ok);6m)X8JDS(ZOxfZ3vv@yT-1Y-`7m#O-w|LYTol4%^zZcpoKXt|Jc^TLw@HgL9>c z*W+3wKvbR&8;}9^dsnEwp4!VYEP#h~+@snXLM`d7t7sV_F|;SBSpZ-=UZyfRIgNnK zW@Wi9RaodXHaGREd;&O{Rc*f8GJ6TX=^6oTI(pS15nsLi!o*bpHasxRKG$urFg{5N z?12T?bA^#BV#FLPwbE}3k9OrkK_K-Sf+}nQ%=l21#j{9d_m)Mzy+zHv z-+-)Q%mmzIQbi8eYv{uR}%aSz$LmI*f9>l)Ur(%6+(}6T;e$&S} zUeFTpME+uK9d5xvuFT( zNa-%jh9#QOF0JMu{)={6PVgoY_?e>xaYF`=-*(jOVgBJdUv8cHRCiKCD|0b(9}6VQ z6C9}7WF>S_5kR4=b?Bp8+PYT6#8q-I&4B@f$fjr5WHC1NHyf31KbZBatXYT-DH9@n z*|{wQZDf*Qo>sbxrPAQAt$4x{lHK^2axqqHd7=S!vO^oQvVwLpg26*>Z*{*-Vz)Jh zFerHWWXNd3co$=#k>1Jg7rcx#=q zBSBnuBJt0RjES}|b!7vnv9onL`uD8wQ*C$1*qJGfm6aatu+Gh{jbgX8!S%f>R$z6s zHf?{jbB2eKiuaL(Qf>5AB|n{cKl0Uoi#=cXhnpj9iC|`1baSWU{{X(cw$ELSAI`$x zJYfF-4Juy)NRf5MkxACW`B0dw49r$JNY`(;e~nQmNCOwQMpJLhUXLU2aesLHjp$$- z2p(cRO}~h#U~w{R+y;PJ$MdSGEdrHru6wP|rL5N!%4jhXH^FsnPVhnRt?2S1yvGTW zIOSDnWrgEpHrj00wZA&2Ac9~X&2;E}I$EX}G(k8fTY;ej6aEy?;OQZ{zloM7lmjHC zOWMP(+l_23O3yhdc_)ltA_8?XBdz}c02qITOW+DWx+B|@9GdPHHNKt>P5hJ@V5+fI zyA43;@}G@wUQT8}{Yu|ZSbv>UBy*!LuD|)x8Psym6s;N}ux4*-Dz)w}VSn(db(CXt zgY$4=kYDK}!V0I9r z{Ob$a-?0|^Z8=3mKV@NWl$~C!N)N zfPrN#wRH{GaPL_v-q}O7#)p#NkgJXsR}%I}IcxK$eORNbp4%LOX z4GqScUqUq%rj1vEW?4a>mB$$*nploANCGE-0IH+~W{`j{e)jKOl+|Sm!EH6kQ-Plz z6pfJ3dDWB>!rOyJc8A!*OOKZQYkk!1i4Ozgu0~%X)44eCF(yO$m;t8Id))V^*<`5; zEfW~YH{1A+KN}<`e#xc%y{+seM!S~!+P$W~6i<^y_NOdk&6kOch~LIyiI+k^xg!4n zoq1bnn=`-ZUM&R&BhKaF=4D{*i53^w!(x(tJv!GlKCHvZ&Gr+m+B9FD!O7yBew12vatmG%&HpS3)fR> zK^|fEHzkm{85s`VIOJ~{DAG$E0I@pKTtL`AABujST#4JnG94Xp^dtmbi*x-=T)R^5 zK2EI*2WgUs%*c_XV`z;{i91hLKc8xYcmvAKk|83)x%}Mh#!=l!3v(WElp{{Z1`Pz95aiNkboPP+U>bN>MS1UUB=SN8t^!457o z+=N)s$v)Q0mvM}4QbodsVouu)D@|W>y`exVBJYFy3kMs>kbTX>v$^+qrFh$=t!728 zs@l<%TA_7`_O}&-n-uwXWyi;d+___gC5&(wQdvhmVtAcaD48 z*28Tsuh4y$set9CZby;H&X4yKCT5Wtd#CB^uS-?cLLq?WL{k|{Aq4I=BGx2ZT7E=T zq;d2D-Gz@@(1WlPNH*w22n!d3*>XEy_=-aZmNhMImpv`;??4^m{n_^y+p$X*3!ZR} zX5WQF6ovpw#h79zs^Mwk5RUcs$k za^o0@LO~;2kB{SGD(h)PTCm21tY+(_{X5kY0a%c%)1osKxFnSqKGAyt>S}D^6;v1C zgT_c^41ll%qh7>y+H~tv*_G8CByQ;;j9a~RQf z#kEQ-H3p!tg*N*F;e-F!@(X9wiu zC&!LPbynk&Yvn0zF6y5sx5lEoD%>L7T1S~r8Z6F{Fe(qQj+MGH4B`1Bg_6whjGRf= z#h-*tgpvA>M_#IZXaJ1fIPm<&CPpj$PaTp5M;VbI(rj{evPcI;8lwZ=qWl``J0+8`R!^$_&EmK|3yoeYiHSf(_hb+}lQ26> zj(XU&>^&=n+g+YbmX%Zu%f!5dvn*1xtTrA(bSzi`z;pmsb+NZx0drF>0Eh?jp_D`J z7bvWKzsp*+kql(R$Ri&$2a*?Hs>Z|=B{#4BeW^SOPnv(dpJ?;EC)~}*W#zvk#^;i_ zIj?Qe?HBrIRraAlsJF~DuSe?MuCTCheYIz4W@GIC0J=}x{F#z?zNd)GLygPeoqX8s zp*A{iOWkWt+PkcBxHHkWqtEetl6}wiR(~DK98M`E{2P8p_CJzd zh%4?4yaV?KAC|M*24u9;5!GUoavKW`O(gJS(OJu6#hf{T8yR0KGZaMNE!=I|6l;6m z)AORN8pO$W_sp~6V`AY;3u2QVMl7+o)-qK+t!{?O4ZRI2%!yq!hFkvtaI;sDA8pU! zEK`nuDlj3zLWo7k1X$~PRMt%?YQ8dgZT)86> z1LRxplX-CD_aNw}vA0?(pq9un}@JYm_>VxEC+I@7Y05@_=|d`#{M@I+!PsN{-R z?iC9vAy+zlz#gBCV$b0FtVgIe zJt;UEVEfwpu5asFKrpN;u_}M58&0|!&t?XW1TITG?Pnz4@x3{~h_ciPKgb@!-@dsORMJ0evZC&S|= zgOtaMh{#9eRo*s{TlS>!uJxK1a4a2k+DB37YF(r{G*9;59e`6Kkk8B|aU_QLSmgPe z9z(WiQ&smWn}MzDMP+NLOVpSfWHHMIJUR2lo9%{p(jg+0X1HK3J?C97tz}m^>w)#m z5poTcpO)Ayobtw{Vv8bJ*+;YG9y4}LzpB-}Y>{6ZcqIFq5ADby!;6TEBlfZ5enT%I zmwb}2+T|nYim&qRCveo$t)wkZq+AFLyJd_?8?vx_2k|^)lW=eCeuaD18?77-Gf&3x z+*A@gGL(sO8a67WlG{nThB}jDdm7@l#>;@Lw~rPzC&xZaWGl_ROna|zdsu;`jYLZt zV2zzA#FID6U|1$Hf}jm9O|N@(U(U2uB{I3PFs5mwjuRP`Y_Y^x0M_gU+h8?t!vQc) zJUE9cI2G{}?S>Z8Vv<;HussX(scA_hu$3&Z&nJ&~WtCC30>3d!{MOV0wGD(8QY4~0 zILnCt0Brp^ads!7sR#7-*0V?+OqVOfBID05i^U?dKhv#(?iL5!N$52I>s{KmWg;DL zR$=Dj;qkc;sE%B|MG;?e7JPW)lYN!X>Xh}c>04X1pBP{6A~{`|qYWzvz}%{rwYnP* zjkTndA&;7v(Lx~%%_57)WV-u_zqNfW>q}g>A}hi7>NkI;_BGNYt;`uhoqam>?MP=O zz0GrC4xs#LcpRI5?M%|a_XO~rJos$EPog@ouQUErI_J@zpZra~`C9d<=&=bGkjeq9 zg2!ct!&~*Q7yD13W29=CDEohL!y`7jg(kw?G`&xV4>A!8ZixCipX6ySLfiri51qV+l!{>r7<`U5e`_mThc69|}!kMoX4H zW7g_O{I#c2STh^5slA&0J}Y`~51(~gT zT=%t0(Ie~^1d%buD!_$sRe`uFz>o8+p0*6G`?(}AtEjm}Kb?(Mj$xR6m4hvhBjjU- zldD`X?hUJ|=_iARjkH3Nhjv{QsZv*6)@87_sQA{luj3|EZefN@u)~iGqyxMbVb|I{ zr*Z52D;m|dWqr*ymx3>;fij_*6_GbOypXo4Pfy!p)Dh}5uBz4bXwGcbOQFf(<2%Z- zMG~FS6)e(6wTN)fe{SK@>s-%UehzCU$g=s*q)BnsSemUM)fC21Az3P~NdmIL(=e=FB(r-VCIA|sp1&nrcfH1Z}l%#O`)({Yd!Ctel+qQ#vU!C7BCv zi7dsgN;5iu2p_8UHCL*t#|Wy-my#ks7m*fbJgtp&h8)2n{^irzz1ymG-ToENPv2_C}>$XCZ(V*KMzTf2Xx~iGoQS6Okzlpxvb+>*ps%kLHH^ z-|dWuzT(cFO9wX?Z>~?tCe*T*HuMSX8hZ zip(~)pMkFJd+_7RIMowq^lXW_7^IR&c?`JP_GS~gEpF!I-nnb`FY0<$(N98|c{%dA zbs4gW;>J@UmPK8|O>S+jm8#s#UW&;qoPm-zn6Hm{EHC<0jV`%|>bL&XBMOPq^f$TtJ>l@!q*SHPvszz-BWWo0gQKYRT zPF!9n6c_&h!KUw271d|KbI$OM#C@^Gav9khIi5%NWaAYF?8nt^{daUNQ(Mj9aA~(k zN+$mRlkj8y;F$ja$TGsa#7e5mplg*3O^3wSMJ$oUdbU<$QTosHT7U40#Gh-tDWnlW&D~f5#{CtaxQn{R5kwq zje6Z+=##?vY)nJT=Q2j3^T8%J1@7%lN$c_I1Ln+&DRXWzRWU`t}t>~b9$Em9%fcvecgz0{?fUx^w68`{j;3f7G zHTR2YwMo+YRBUlpRaQ-gS}8GYWsn6T_uOte-&U@De&&}8#du=I0_+$S&9?WZI<7F0-B;1 zb}l}3Szc)x@&#r~{-yT`D@VyA1^E6l{Vt zJJ_^^u6J%wwl=pwG@{g(Agu_4ke3PZ#BjqRNDhUh+=@D|Rj@kIRcXr;Y7Y3R=9TgB zF>xMQ!m>vi`<__{)7YcsUbpK}ZCRGeTRcI}Cy&VE<+;ztY)ptYMUfPMt)AK_78cW8 zx2x8YSQU$DI80nvp*)0{2QFyVX2Zrr4FWm+zcb1}4BbMC%HLufBTDL(EU=51Ncfoe z>^yuNTyY`?%$gnfb5C;G%6-e@^%_vR>tLu zx%JllY3sLJNM5p!Ju0nYq!4-zgnt_JjxtXP8oO;a(X4d*Z9pPuGW?My6!L{pD3cy% zzSyKXHOLwxj=vphY_MsqGPdr;q!#@pw(D&OuRH7>j-%L9 zBPRnDh08k)(m3jOgL{9ZbQQ+Vpl%bANbqEl$!5rv%fF(bu>1uOHo&rSrO5i|Pn@AOXQcB$w@@An{HVQgVZdj0|0;O7pGQ3Mmzh9hCbo@VBkB2c~n|P z7qrmbqJ2O75`7J6s{I_9?Wbi2%>`T?tO#!7<6g1lGu6MekIj9@z~}vvvCl3PGsT~S zG%gdvDw59uC#uM*SPxtJ*ALmMt(Cn_{{X3G>g(YH{m=Gq-5d`sh4(xH8SrBYzw(TN zNYYy}+a?DLRjhW6z=A~@wl1)V`&z9%idp&G%zU0D(5*V81?(ukQAp-TETs*)-{NYL5zb1I6~?Qy zZUf<^=~egua4&y_XajE3U3*gkTz#Tl&YOjZ>uVczsJ{azee%T|OY*L*t@jbGo|dfY z;mG?pfT*)Gqs1V^r5Gxf16A?JCENx2kB@52s=IrmTHf7b!Om_rWN##5C1E(;?|lm2 zaz9<5*j3W?C3f-TGZXGC{9Zo=ev1Y~gfin~O8|LD=)v1|w+&(l=~dNBFXXaHPNjUF zM=2V3@vxs0=ZXl%I+Q&xwDr9%%fLfn7|5aJi53x?o-dDX&NDoF8ujaoAE#!rY&ccEh#JApQ_^sLp~;MUOSr;t7pESUF9 z(7VK;LqG+zC*8QMv=+LxPUfBtdZ;u~PmGvoXN!3r=uZ8JVRAf6Hlg9r5!{fvqmpUAo<&lUxJbP7f>`nLdV^`!9N4XCf zG!e>XLSj`zX_I#LYa6A((N3j+rD+xkCeFra)Tz1+-Y|dk@6`wR>sfSQSLEhM`2~Oy z>=zFDoh`Si=q*}SxFwxK&dH2gLi09c?Ps6JLH6`uY)^YypTyhtMDR{IY*;YXSng+) z_c;S`jDe#7bUvE(r&>10FlDkH7iN+)Wp)L&f$SRon(eA^Oo#nDW2AB`o68eTkGI-F zHl6$2Rz2m!6aynb#BMBD5YEnTaz}dBsi1^3Xt^>08XfDY@q)yU!m8GeL8QWPaTR1t zj~mMzZ|=CV?!U_4n5?#4#0NwXHY^zclI(>EW+g%Sj^Z@bfmyAM6snC6_W7`&`sY7{CrnxJsr0WN>Tv3M6F|`>%~XVJ_eQ1av`~~F4iB2 zq6AHj2K7OpyAR`00QdrCW!_X5WmdFez?*AfdeN+siIJMYfB0!gRUZ`l6;n6)~fWj=2y4mvYPY!m`p@X%LQy)sW?v~se| z5Oh(otb1J7M?`^G8zY!#vD_gqBN77xsQ4RIDvj9Z2QoOIR}UJpo15IRC#}sxtd^{i zYTUBpo6;j*PZK3$rLsb6B!D?=RV=bZP8@S zY?tH{qAm1Kz?7^5zt+qTA+LvFU~T{Zf*^KbSoT8qc~lW~7@ ze`@^Ahl%#&xguMeWaUg_B}MMa0^g-ApH`|Jt#8^2uFAeDjyWD4K3^z*_Qwbz0f5Vo z0o!OsKQU?E*A+V{O0Hb{<%-(f_(^}T@&5pB{_@6#NdSrmVpDv%FhnGb9SL2;oog#s zxAxio!g?WdU+Q_>>3H_N*!0%t{A=H{gmFowUWH@9b91y_}c41}_}hyjg^- zhZullWAAwlnb|)B?X_h~*=&B}(fpBl%DP4yTLE%wdY-L}I!s?Cdo|?B+|kAX(PP%v z`~_>S)B7AtXKOTD3C>P2*e;AUBiG?qZcQqs9N^((JdCla-(!0U9no~u*cTxVej8d< zAy|CY&>D5JWZsPsag9Di#s>GR`*rM3O=|7I8uHIY`&JG=8#?(VS))d{eLyzrT-V9! zXh|5~yz(-+KfKE^V~4R)3-l4M&fmwaYo`@{rx)99+atk+<|4_9ke*2+k~Nk`@wAFp za8qw>`qxgYCZO}SsB&@P{PSO1{2d+-Eex}a9 zp-le(-hKxdhU31;#ESm_BS|3KFaH2S5Am&+)~YjGJ%MHZ_U6juL-ywz6LklC=HLD@ z)qjq?SpHUFrjg{DNu2_jU7Vtw0b_d)hPAC!C^K&)ykv1nn-V$_O9H0)3u~yg3@U69 zn8^BHumi0_D36xb2-5l=nSTL)@uay1Q+T%C%VF^AR!HawV4&RClit(;Z~p+Mhp(j<4t;g6rTe|xk8y+XtI)agVx08Du3$VQ`9DY7$4GHH+Sj7N#6CFt9lEOk*w-F&`Y6 zFse3wOpS8iy1vywy>^>+u6y0tn^vl$;eErKAF~T4NVwouL5(;rmu*8jNxd2FzmLYD zHl7N@BbO>nmwBgik(-w0NjB{_Zkm(r8x($3Ffch`@KrW0%J&mX>If$7jEI)Qzz% z{{Z$^Lf>SGdMepVm;JH(MlxZIvrLjHSY%m*j3oUo(e2x_)L#CS*84UV`t?Z2kL~V! zS@Ok|D#?Qwu*-)~T>Pq3>+5>f+wfwvi1V1xfcFrA@T& zTzhV;b?JS1JqIuDCyyo8DR(L#A|qdL2U8gxEJsS`gRL-T=i^e4N9>C391TIa-DCLc zQt(ts82hE)9?pQY<=KDfQ)LbK4FxuYkt`o@V@|CCu>q8T8?F0v^fZvHS7q{n;*HZ# zwvmu^CjRQOAn@P2c(cR(#mQjIZeo&dzW74n?i|fMh9HV*I1G=4;LS8#`F_KCZ5`{Y%bY8-&G^I}e=5`fNU3 zTW=U6-jYV(2OF%$;GIphHHvzV2|o0iX$hq z+yx&qHS8=Yc5I&@Ij~C)CfKqRd6qzu7=6fDyD9un@vZ9-fP9c-BSDuWGKLKklyzZu z45q|2yWXpmCMITNb&lad+hzc^)35l7OOO+6SvOk1sJBkGp#Vf+NWjLyL`pBeQX9YH zb6K|>fErhzJvSrn zKeIVr1|BkGTx`U|i|TUnBUXvB6a_1_N;SSW`K{KotIjw&73$Uuk1xgX@o?X3Hss4H znNnqBD+O$YQY2Vzx~mA(s3-MS{qo7T2%yNw#)mRk;=?Bi!8nj+ZD}Hj*KlTd?e1S+ zdj77z3eRGkj$k8@Y&^VqUXP)K-;Vj8GjOJaa*h96-dL29jvzVdZGe{m6f(;42i`vutRsOf?NG;BHj} zGMuRbt<#w5x9;QEs+0DvErO!Iu<|z7`UV>OhQw zbsa{%svQ|j;!7-+Kh#0|>a2|F#|{iHU|Em=K=07$TB=MLyF{E9A&CO!=H0JTdO>uv zWP(kwskW*}H3?*^I7d>={{U{KMak#}x?ZhP88vcdzUIrv#={<9w`+h{T-^4q-4tw% zmQ_Z77csHph6D3EZ!&r#YHNE`nqCnXCoz^*3l`&h6Men!S6ms{wsppdAeIciLl5e> z&o70&#S&HkpBZKSL$`BU(^_s$UEAGLQ;_L+{Bw&RGs8~#oH=c!CI0|_7DoR7ZaKiw zgB$E|q3CRMrN2yZ!CzDCtKt6uB1V|cxMVib5ZVbnTHftH!ntA&_h~2NIXrxfcfre( z#W7usvU^UN#~`BBCbyr|&GUk6eo{wCL~IW2t){)mBd8{~qD>sztktl}UiI&l|nabUc-hh&Beq&uU98r)mou>3)qqi5oRm__#0bF=WU~WG%5J#B}u&bDU7iwWDG7{o1&=xH>XXlH40?r z`w*)j5X;2MA06N#$g#(gtPao*S3_WT9;c|Thg)+e8)Ug0Qj}@p9#EDA;=2O2xd+g% zU3*bojp2xs9|FJ7?)zuP;Ll-=@_hEff$VpiYhSZ{d!%{B5{za^Q2 zi=J^Dte(;C>XJxcHp6tnB=9hOOYW1RTr=yg{yaFWK4>Z&*GKLYC5nRx_m36 zYy3=Vj^*Q5X=r2_SHH{cU_a?P-nlZlHiQ8rawCvIQhr*c3{Y)9wY)ZD{G|N6r2hcN zaWS1(n>I|UL};Vb3$gfCKVr(YkM3tz)YUfa;S>Gc%!nbEbb+Ok=?rRm6Wsn4hN?Es zt=CmWPxioW`;}g0X=92h65ln1psO{Hr&{XWRnhyLpHCYTJqP=1_JZVL%ya$G!!t)3 zgVZf@?YgYip8U zs2_;yOy#qMCTdTze)apS8Y9EtOURr@Xw9XL>2ZCfUBi2S3e!?_vu}s&dDp9Ef-mhi z-|LGOJe*L7q+xbTks8>6_@4F6YPV*^@v_JJdHtjN+kxe$(Y?P_Le(rNoxfi zNhH`0<3JjYKMFoN7KbW3a;4dGtW}yAm~D?6uF&%Q&(_OadvyWBvNe0dA{z4N#djo%)y-WZmOJWI`Bi~|? znD-|3B;MOi*J1oMG|~XgfgjkD5~PV5;HVpY>h6AH{QFZ7Oj!7)J?!Cvfwd6au_EdM z4|cwmrPOj2z(E+~;f>>9k``SFUaCk1)Tz_qP6t+PxLzv{iowe`*CRe*JpN{93$b=6 zO~(B`HledriY|6^Uur(oWA5ASQ+)tc7A(fDsGBnyaC^Bh`F_g zdMwPv!;UBZM?M}`0xm)4SY+e!rd^2xMwe)=t+`7v1OPqS*wt0z1odr}IJpmz$;&ou z2N%g<6i9BX{VQ|OpF>#LBe^D)Ncj-4%K33G<=IXhC)@h+!5Q|V@FaOEGExLe7SNpp~F{}UqY-ds((6ltl*0{QbCLMd;Rw( z*g5$x9Iuj+KEx{$B-#8`1OsN#E={k2JLPutLopu!T0s>&oTNrQV}5BvJgFkQgqkw(z-jQ;PaTV zP|4A*tJDoesIy3DJ_ucwL$2+l7Heq3UAulFuy#X$jIzH z6+RP@A&~swmV4+)I`!^vT^*p7MK(A_MnKL8(2;G#^xNL5w*pV4l@O!G$t0{*K^nEi z#-6l0p`=A7IS8spxm1H4``(3V5jc~`BmKatz-|gQmD5eWoj*Fx${3m?P93Gnv&c3$ z43D5~r_%asP47tnOL34vBt*MO81~5#U5=+i*HzZA`JIq~Wyi~!Ntq)^!!7TBJ7ZXh1A(}(4BSZ*0qri#Y-1n z<4;lRKoPVjV05uleLq#l!kmnn92|#cOB9qSWQml9asHal`w|qEaecp=0Z$?q-=&n; zsUqN$+PUraD#h5;@t@oNaB<=nngv-AgmB1MOrgkYIYDiEf@>@7P06~_-b(3y-Ok~n z@n(bPm6>C3_6x0rkIQ{X~}(I&~Ue$D12Nal)6aPcSa?gfcLNj|seMIYqX zh$-u4myhG~SQr$ezQBqR);}oOcOW+1!_(nhtMYP-b-*HE@-t<{kCle%6tN0jN}+p& zRb?ee76)lPYVY`>A(A!{EWb$W3T8V~`UW_cn?08&mD^>8;gUA$K>nrx>VJhR{h7kx=vvhjw~!pzxh#y3 zXN)XNP{aYhv|j6B)c4kvc2yZYlFGcU8Of6(OpUm^$_Y_#X6yJ?)!XQZc4Rn$Y)(fR z;aL?HSlGvq6`H}p-*MC7YOBMmpHBm&pJe^dTAFa#u(0hTT=cN@uNu1WeJj|Lki3>H z6YaB}z!9xAt%}P3**LRmj+a$FQDbw7xq>cJ~& z^(BnTRHo8CHmX|MMEr}hL~7HPJCu?STWM8&N(D`>Nqxo_3)<(Qu60Oe_OzgMNtpmT zD7Y5Bo$G6LGNjM3h5M@^v!`@(VTj{#2LAxdwRdX#Q5#op*n^SIjrhDZ#~v4b!cuyB zdJ#^Q&PTHAs)DXu#t2Dcyn5?ebujM;y8B(x@p3VF8GzyPnHqd$VzU_{xsGT^`CSj{ zJ+z|RoiLPw`m1a^I7qw2mTn6&Y|buUsm04tjV=yNq+Eshj_n4ZweRawuk2ffX}9R> znXIBHxc(z0TO$WPEOt`BV&yX#VteX@*jxkN-75>-&loyssYmk3L&@Q0L6*~pNeR)U zO+$QcNz$&iO+kj;c1}q-Ja4SPgDxTgE3#nS11Yt~rNvcTGb^WL754uCC5kYlh_Wo0 zz$@av{-&nS87ECTieF($STy=gF4D_sOcLTIOlp1t`itCLU!|*&C}!VgsnSs&6%IqJ z^C=L*imK8%V4;}%YzMDujgKdlxu`jxGAwAx@*`v}i8Nrkk$poR#>Rz5W?@#^f|De9 z^4*hH)%P!Ey~kf#>ek^JHRI4W9kS!2q+VRNBWWKh_h1*hR&7O^d=F*#V7!Jrl4Cna zg%NDq$SMg3qTgRpRj%;xXR_UqQwqi;K2z-s7tnxfuH0beXt#?iDk&onv4$*l-x873 z-}T$C=U7LdB)?Nz_WlQ+C^=kW(9MP%pxC=u-u+F*!rWWFmBqQf&b-M!BSh z*7;LXUq|4dgyJQ}k)_D??gl>?>+iO#dR99x*t${)vms$|aol8TqEi5yA%M2&W%o0mk3n2}pKG(#(z@$N@?Lct zJCc%bGK61bVD`6D`I_m~SVso?_OZVH&G7NV2Pw(QRkc_Vhd>l=Zoi1B`ws~k{aWR- z*8a}oSvb`x9>Fs-wgW-9-ne!%*3z(FWZ=mflBihv*pMq8#^yJj#+5@eDX==$m1b5( zaK=;;bhxb~m;&S-rT7lQv`EWiDmjdPdT3$C;ow;v$rDQK7ia@Ox9)xwwIXtG@3Tq~ zSBds7BZoPcl?@h5!+bJ9B!Sk(&37Arm0RBYI63Q2QrAC|`^SglRAK$e$SiE(LOi?3 z1YbsA&HU=Awb{c+o7NTz44=CG^OO@W+!^hDzrO4L0P5PelPN2w=DEp9OpZ@3RsCr5 z$jaXa1&BX|5g{iLi|AML?Lz~z9DR0zM`}Po<#y;TZ3Qt0Z~{T(W7L}i`BJe+zr{-c zN&f&NS&b2A%lq4J@+cqYO#>^QOI+U9?^H?FJcO|#=lt(L7a@sM4SOn&gOYu1XbQ@3P2&%6lWq3J~b(UX$$47@0uY(=|l{gJ_TKoN z!cSAFjOAxY`K46JIZ?&AWGYEg#B>+ywyhI-!h$0_a5a_2%kE>|Iu>SzmW%*X)s9yg78teM{qb%b4JAbtv%l)ni zg~Rc9(ayOT*pcK2auVTWmRSUoI)kp&e_|8;B-aPneXQB&ePz~(a&7Y32{^}%`l=BV z6K%IQCtqHK*E!N)xv#n9$IgQf5^bK@Ue!}~Cz~73dPPWx_@7GdkNPI}?e#HB9 zmT#uI+gBepm(ZT}6y!b>aNpaHv}BYZ#8lS$6X|=Kj+Ay2(uSY=XZFOgCF3YnNmfF@ zg&v>|zLa)B@F6GmtL@FVXkI3c!Z9R`xrpvR3)IRVz<^u(Klaq;agtP9Gou+81GHrsz7r;DU+3pRZkzkf<5EYT1Rb%K1l0OIQ$-}d+sF)k??RX`k^M>MXl4Go2Q3LBF-42?H z%!yqV{{ZcxfgmmO{@?U&ANf_uO3az~+^$YY_r$OWTYM&D8a2V|*J-yyRGUSr zwsnQY!^M_3S&E^7hG`jgN2aB%=)cx=rLxW7Zml4U81Ur0uBkrQihvnG+aCgSAghoAQ(}DQx+;1w)O4z@+eS>4L%D7N-xfSl@Vt^UG+{RcWkoxKTzgO8YbxI|D7DE>GNBm(yp6pSNe(8t(`;ty1>YR;uhH% z*jgvm!wac?*Yy_sDxcVln!QwjM*AHi)_nP7i4-C!k8^MT0Ml08&=aNoD*I1@pVmvs zCoA@rP75|fs$_)OexfG-0Bwbu*4J@8tZP5en`n*->F}mpwVN^H#wOCmJgjyEKrF5P zqxjS=AsqIrL^5V$=46exgn_jq7Urpspt}IXL{xSqpgfhp;^g`cc*y z9pwRIOutp)9yBwk24@x_N5{2OSQRb#7hGQ;u{5~B)_9N;yP}mRu&!;?!KLjqYD+IP znH%HAh$b_z_8XUCH7qsvSaz;wSZ9}8uO(J?HdY=+-wdmdC(7=m7AIX7q4?IdhO)-C zKLiN^lCtmH8(#N24Z43LTKI%!w>inD;&8awWREr=b7p0`$1ah4w(0G;HtIUpF56j= zYqGPDmoGPS<(4rz_~zbs6pr^QASXfxN^W+{+86Przfl81gDg~Bn z6Y{d@OJ$o&uLv(-x5nf1COE!0qmOctvPJVM?gipYmG+hY0NGh5YUIsivwS$-IU>ME z!pCq4XDnkN8xLu<0Bqk zE*PbXd^o0`ESo%$?JCx>>1{=UxAUxNwa?_t)q&62oIX)^XtMA!=K@%aY8o&YkZl_Q z?Z2U}kMbueri$o{8+HEx%Dsx5Od)^UUz@#7-bX?yZDZH-=~GgVT>GB?08OUv_9OW% z{{YG#E&F;`mj3{g{ZC)}SLk^H^zZrCq4oPx^X%qP98gUvQuPY}d!PdtYz+m$>xz zU((uIuffT)l0UkC`m8H%{{Ut0zpu~n{{SkVCTzz2+5Z6M$nF0C&0d{49=EMEes>|wCf4oOLM(Vs_DARV{#6z!7twsF_;#pe zAUxmq+pliFg;FJePtbJh{{V|s2%iV1{!{^Kojd;k;7~AAedqBVZE64)n*RXvZb#wy ze8Qc16Ee6TEY|DeKQH^1*X6#Jt&s(5exLHGV>SN(ZCm~jTHo(I_Fn%0{8#T$Zbpki zw%XeE8*jVwwY2^<1rmSSeLQ#ZZ@YOv`knoB-*0D5n?F5iXWS5UU-8><@BaW7=DfD@ zeRrFto@;*A-~L@onf~JI`xjCDKaoHE*Wa-({`a8UyY%k-JN(rTk0maA7BTrOpZ@P& z;@fs_zV813`*f_A?r8r2V$X*E0Anlv0L?f0roYpFv;NrmyLo*r`e`!gbr+ZD@h$Wl zYE$-MhD^dKe(F{{Yr$v!eXp?%Qekul%U; z1hDMzzTLe~UDx@4PVf9$n88iA$7}7|?7jC|$LGJg-_g5TV96uC-~9{wfBMUAx5MG- z@u?XkKmBZ*HvFR7K5KTi{{H~ge$?M0@J#!+CHH)~?zZ2~)y(-l1;IzcTmEO1weRPS z+i$nz`04mwx2Fdt-b+QzU{{Ult{-3J<0M4$aJ3N_rEn{oi$EE)O&bLP$ zhKK!`E#>)t^!{(>+M49e@#LtB{p9=)$J-mH;+y4L;tPZEafywgurT+lvcKIaR^f z_3K?Pla{;`T-W~qpZLx8zthR`e7%20%{F>|bHh$!+wiw)NOmOlZ(HrQzt_8`>9)IRfhHyXp*HyU{^h*3x67~1 z?7yY|04hL6w(}0RyMMQTFHh6{bOH}cd1UKE^S0do0Q8pf>*n3${{Z}+p9<2ZSN({1OL-T=^jF`np8h|M z?>3+K(yWA8b3QHOfByh%+UNbxCzGdbo$DJ6%RRRxzu>m+YjwYVxA$)RX|aDnhmOMk z0P!D|{k=XPuB3m^<0r?pZ~p)p(@p+Pm-u#|R{en|@$Mh~V6~6UztiEZ>7jo@8GKfc z{{YMuvH858`21)YTz;Pa0RI5bTF0lJ-Fx@FGz=hp7SVtBZ_5C$u9o@KHoOJZMVO>{mq*H0F_1fHalzibFJsMg>SyzPNV(X z{{SzAWXuqc{{TkT`kxla_kCyo08MTBZ@=#K^w-x)UP?62<@%F<7hONw-_Uip{w+f1 z!K(d%AAi(jZt`r{Z{gYDzi*e{Z(DY(@5vVAreF6xx8J${0NVNQrSH4j_;%@P&G19u zz5VYDSNgl%@4v;ncF}(&wB7#z;@Z~Mke>w}Ux&eseb(0gFE5LB?)KNq{dV@&mHmrF z-fz?Ru>8IqzG1U>n|1dK{{XeF+x(mV04*zIc2|PiD&85t+PD7z>|WNfzsGI9U*)Y) zw}Y%L{{T*Q_1HJ<+ikl40J*!rrr&j~OUN01M*jd=ExaC0qyGS?{B*Vbo?lk=aT#S4cmTR zpAY4>n&5)VBWL_JJ^r6>Ywz-P{TBCs8rGb6JG?GNd)R-w->tv#YLDn!{m7ek{{a14 zciV60-mCfx`jIy7-haz)^1V|1g#Q3>m!_XpeR_U9??e5BzjA+dzx8^4t6ri0#jo6! zE8Ks({HiVc7hl}%xBD;T>U!C;nHioko`{@V9@=Vf4R|E#-}tfD`6EU5_x}J=o4%`Wh=29p?*3bK z+gRv2e$NJeU#I%XHvJyoAO4q{#eKcEd$)fp*2-ha$!P8UzwQNxe=6I5L-JeD^}lMn z8PMFm{{W!J{{V8_5qh4W@xcYpT2PQM=2)chW2s1|4G{{W!$ z>(;eg88XL$ztx|b+doyd{(lPR-NDhT$-d()yBgn5ed695?*9PczMfy{ziRU@*t_v-a-|;xRK9_Fc{?EyO{{Sn$-CXwNirk$={?0}IqSjxN<>)Qrx9RoxQ?DXr zXDPqw({22EUuN51Z~mU|f8*M;)=MV)cK-nK85Zzg#U1?i@_gEL)5-lG&W+qJ^oyx~ z&F=6G-%)!#x_?l=%cZ@4m1V5Wl4EZ0E%sXe%Wd1!wYA;-TdOt6VwcI_d*1tx`}-}> z{MOTV^wzJy=ng!eUx97Ayb@dKwr%PE0I7d&-|DSDvHqrvwvyjj9__wQ7QQ>}wU1rC h&EL^#<$M`~X}s<7+r}@x`+jfrYvcSYdhj%V|Jln=BTfJS literal 0 HcmV?d00001 diff --git a/demo-app/images/monkey.jpg b/demo-app/images/monkey.jpg new file mode 100755 index 0000000000000000000000000000000000000000..54a742cb8c052eeabe198b89c0a55f5c98e4bacc GIT binary patch literal 155956 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�)8Mf@t@t__`jSE$Z}a&6=YrLhIPxfW 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 LW<9`D%*X%P{s9FA literal 0 HcmV?d00001 diff --git a/demo-app/images/mountains.jpg b/demo-app/images/mountains.jpg new file mode 100755 index 0000000000000000000000000000000000000000..fa07713b29020b4232ec219339fa417f384db5cb GIT binary patch literal 79207 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 literal 0 HcmV?d00001 diff --git a/demo-app/pages/404.vue b/demo-app/pages/404.vue new file mode 100644 index 00000000..8d1ce994 --- /dev/null +++ b/demo-app/pages/404.vue @@ -0,0 +1,9 @@ + diff --git a/demo-app/pages/about.vue b/demo-app/pages/about.vue new file mode 100644 index 00000000..a2d511dd --- /dev/null +++ b/demo-app/pages/about.vue @@ -0,0 +1,12 @@ + diff --git a/demo-app/pages/accordion.vue b/demo-app/pages/accordion.vue new file mode 100644 index 00000000..19f2abe0 --- /dev/null +++ b/demo-app/pages/accordion.vue @@ -0,0 +1,78 @@ + diff --git a/demo-app/pages/action-sheet.vue b/demo-app/pages/action-sheet.vue new file mode 100644 index 00000000..8b01b754 --- /dev/null +++ b/demo-app/pages/action-sheet.vue @@ -0,0 +1,128 @@ + + diff --git a/demo-app/pages/autocomplete.vue b/demo-app/pages/autocomplete.vue new file mode 100644 index 00000000..32ff7a77 --- /dev/null +++ b/demo-app/pages/autocomplete.vue @@ -0,0 +1,558 @@ + + diff --git a/demo-app/pages/badge.vue b/demo-app/pages/badge.vue new file mode 100644 index 00000000..7b9e473e --- /dev/null +++ b/demo-app/pages/badge.vue @@ -0,0 +1,48 @@ + diff --git a/demo-app/pages/buttons.vue b/demo-app/pages/buttons.vue new file mode 100644 index 00000000..e0f1e678 --- /dev/null +++ b/demo-app/pages/buttons.vue @@ -0,0 +1,186 @@ + diff --git a/demo-app/pages/calendar-page.vue b/demo-app/pages/calendar-page.vue new file mode 100644 index 00000000..103cd235 --- /dev/null +++ b/demo-app/pages/calendar-page.vue @@ -0,0 +1,131 @@ + + diff --git a/demo-app/pages/calendar.vue b/demo-app/pages/calendar.vue new file mode 100644 index 00000000..934111e9 --- /dev/null +++ b/demo-app/pages/calendar.vue @@ -0,0 +1,200 @@ + + diff --git a/demo-app/pages/cards.vue b/demo-app/pages/cards.vue new file mode 100644 index 00000000..e8838336 --- /dev/null +++ b/demo-app/pages/cards.vue @@ -0,0 +1,143 @@ + diff --git a/demo-app/pages/checkbox.vue b/demo-app/pages/checkbox.vue new file mode 100644 index 00000000..440473af --- /dev/null +++ b/demo-app/pages/checkbox.vue @@ -0,0 +1,54 @@ + diff --git a/demo-app/pages/chips.vue b/demo-app/pages/chips.vue new file mode 100644 index 00000000..7112d935 --- /dev/null +++ b/demo-app/pages/chips.vue @@ -0,0 +1,89 @@ + + diff --git a/demo-app/pages/color-themes.vue b/demo-app/pages/color-themes.vue new file mode 100644 index 00000000..0979df99 --- /dev/null +++ b/demo-app/pages/color-themes.vue @@ -0,0 +1,60 @@ + + diff --git a/demo-app/pages/contacts-list.vue b/demo-app/pages/contacts-list.vue new file mode 100644 index 00000000..9a6c46ae --- /dev/null +++ b/demo-app/pages/contacts-list.vue @@ -0,0 +1,41 @@ + diff --git a/demo-app/pages/content-block.vue b/demo-app/pages/content-block.vue new file mode 100644 index 00000000..0764a2b2 --- /dev/null +++ b/demo-app/pages/content-block.vue @@ -0,0 +1,59 @@ + diff --git a/demo-app/pages/data-table.vue b/demo-app/pages/data-table.vue new file mode 100644 index 00000000..e7dad28a --- /dev/null +++ b/demo-app/pages/data-table.vue @@ -0,0 +1,778 @@ + diff --git a/demo-app/pages/dialog.vue b/demo-app/pages/dialog.vue new file mode 100644 index 00000000..5cb2cf7b --- /dev/null +++ b/demo-app/pages/dialog.vue @@ -0,0 +1,143 @@ + + diff --git a/demo-app/pages/elevation.vue b/demo-app/pages/elevation.vue new file mode 100644 index 00000000..1a41aceb --- /dev/null +++ b/demo-app/pages/elevation.vue @@ -0,0 +1,106 @@ + diff --git a/demo-app/pages/fab-morph.vue b/demo-app/pages/fab-morph.vue new file mode 100644 index 00000000..22c9cbd1 --- /dev/null +++ b/demo-app/pages/fab-morph.vue @@ -0,0 +1,54 @@ + diff --git a/demo-app/pages/fab.vue b/demo-app/pages/fab.vue new file mode 100644 index 00000000..4e366193 --- /dev/null +++ b/demo-app/pages/fab.vue @@ -0,0 +1,77 @@ + diff --git a/demo-app/pages/form-storage.vue b/demo-app/pages/form-storage.vue new file mode 100644 index 00000000..4d1023f8 --- /dev/null +++ b/demo-app/pages/form-storage.vue @@ -0,0 +1,103 @@ + diff --git a/demo-app/pages/gauge.vue b/demo-app/pages/gauge.vue new file mode 100644 index 00000000..e7ac2956 --- /dev/null +++ b/demo-app/pages/gauge.vue @@ -0,0 +1,151 @@ + + diff --git a/demo-app/pages/grid.vue b/demo-app/pages/grid.vue new file mode 100644 index 00000000..0ab0e4d9 --- /dev/null +++ b/demo-app/pages/grid.vue @@ -0,0 +1,131 @@ + diff --git a/demo-app/pages/home.vue b/demo-app/pages/home.vue new file mode 100644 index 00000000..298b2d73 --- /dev/null +++ b/demo-app/pages/home.vue @@ -0,0 +1,207 @@ + diff --git a/demo-app/pages/icons.vue b/demo-app/pages/icons.vue new file mode 100644 index 00000000..bc293bae --- /dev/null +++ b/demo-app/pages/icons.vue @@ -0,0 +1,50 @@ + + diff --git a/demo-app/pages/infinite-scroll.vue b/demo-app/pages/infinite-scroll.vue new file mode 100644 index 00000000..9bb67f1a --- /dev/null +++ b/demo-app/pages/infinite-scroll.vue @@ -0,0 +1,43 @@ + + diff --git a/demo-app/pages/inputs.vue b/demo-app/pages/inputs.vue new file mode 100644 index 00000000..3fa71ad0 --- /dev/null +++ b/demo-app/pages/inputs.vue @@ -0,0 +1,487 @@ + diff --git a/demo-app/pages/lazy-load.vue b/demo-app/pages/lazy-load.vue new file mode 100644 index 00000000..7ae28bb3 --- /dev/null +++ b/demo-app/pages/lazy-load.vue @@ -0,0 +1,34 @@ + diff --git a/demo-app/pages/list-index.vue b/demo-app/pages/list-index.vue new file mode 100644 index 00000000..7da0877e --- /dev/null +++ b/demo-app/pages/list-index.vue @@ -0,0 +1,184 @@ + + diff --git a/demo-app/pages/list.vue b/demo-app/pages/list.vue new file mode 100644 index 00000000..fd741a83 --- /dev/null +++ b/demo-app/pages/list.vue @@ -0,0 +1,322 @@ + diff --git a/demo-app/pages/login-screen-page.vue b/demo-app/pages/login-screen-page.vue new file mode 100644 index 00000000..7f49c983 --- /dev/null +++ b/demo-app/pages/login-screen-page.vue @@ -0,0 +1,46 @@ + + diff --git a/demo-app/pages/login-screen.vue b/demo-app/pages/login-screen.vue new file mode 100644 index 00000000..eeccd6d4 --- /dev/null +++ b/demo-app/pages/login-screen.vue @@ -0,0 +1,68 @@ + + diff --git a/demo-app/pages/messages.vue b/demo-app/pages/messages.vue new file mode 100644 index 00000000..c10eb6e4 --- /dev/null +++ b/demo-app/pages/messages.vue @@ -0,0 +1,281 @@ + + diff --git a/demo-app/pages/navbar-hide-scroll.vue b/demo-app/pages/navbar-hide-scroll.vue new file mode 100644 index 00000000..2168589e --- /dev/null +++ b/demo-app/pages/navbar-hide-scroll.vue @@ -0,0 +1,40 @@ + diff --git a/demo-app/pages/navbar.vue b/demo-app/pages/navbar.vue new file mode 100644 index 00000000..fe1c3f48 --- /dev/null +++ b/demo-app/pages/navbar.vue @@ -0,0 +1,16 @@ + diff --git a/demo-app/pages/notifications.vue b/demo-app/pages/notifications.vue new file mode 100644 index 00000000..34d38ab2 --- /dev/null +++ b/demo-app/pages/notifications.vue @@ -0,0 +1,99 @@ + + diff --git a/demo-app/pages/panel-left.vue b/demo-app/pages/panel-left.vue new file mode 100644 index 00000000..d1ea2501 --- /dev/null +++ b/demo-app/pages/panel-left.vue @@ -0,0 +1,24 @@ + diff --git a/demo-app/pages/panel-right.vue b/demo-app/pages/panel-right.vue new file mode 100644 index 00000000..cdd76a9e --- /dev/null +++ b/demo-app/pages/panel-right.vue @@ -0,0 +1,14 @@ + diff --git a/demo-app/pages/panel.vue b/demo-app/pages/panel.vue new file mode 100644 index 00000000..62dc5f15 --- /dev/null +++ b/demo-app/pages/panel.vue @@ -0,0 +1,16 @@ + diff --git a/demo-app/pages/photo-browser.vue b/demo-app/pages/photo-browser.vue new file mode 100644 index 00000000..54a49fd5 --- /dev/null +++ b/demo-app/pages/photo-browser.vue @@ -0,0 +1,73 @@ + + diff --git a/demo-app/pages/picker.vue b/demo-app/pages/picker.vue new file mode 100644 index 00000000..221d6916 --- /dev/null +++ b/demo-app/pages/picker.vue @@ -0,0 +1,274 @@ + + diff --git a/demo-app/pages/popover.vue b/demo-app/pages/popover.vue new file mode 100644 index 00000000..3ff9be15 --- /dev/null +++ b/demo-app/pages/popover.vue @@ -0,0 +1,25 @@ + diff --git a/demo-app/pages/popup.vue b/demo-app/pages/popup.vue new file mode 100644 index 00000000..75462498 --- /dev/null +++ b/demo-app/pages/popup.vue @@ -0,0 +1,76 @@ + + diff --git a/demo-app/pages/preloader.vue b/demo-app/pages/preloader.vue new file mode 100644 index 00000000..675f7c81 --- /dev/null +++ b/demo-app/pages/preloader.vue @@ -0,0 +1,89 @@ + + diff --git a/demo-app/pages/progressbar.vue b/demo-app/pages/progressbar.vue new file mode 100644 index 00000000..a02c1f4b --- /dev/null +++ b/demo-app/pages/progressbar.vue @@ -0,0 +1,137 @@ + + diff --git a/demo-app/pages/pull-to-refresh.vue b/demo-app/pages/pull-to-refresh.vue new file mode 100644 index 00000000..29b77d1f --- /dev/null +++ b/demo-app/pages/pull-to-refresh.vue @@ -0,0 +1,65 @@ + + diff --git a/demo-app/pages/radio.vue b/demo-app/pages/radio.vue new file mode 100644 index 00000000..26cdbc09 --- /dev/null +++ b/demo-app/pages/radio.vue @@ -0,0 +1,60 @@ + diff --git a/demo-app/pages/range.vue b/demo-app/pages/range.vue new file mode 100644 index 00000000..de3e5bea --- /dev/null +++ b/demo-app/pages/range.vue @@ -0,0 +1,88 @@ + + diff --git a/demo-app/pages/routable-actions.vue b/demo-app/pages/routable-actions.vue new file mode 100644 index 00000000..8446d269 --- /dev/null +++ b/demo-app/pages/routable-actions.vue @@ -0,0 +1,12 @@ + diff --git a/demo-app/pages/routable-modals.vue b/demo-app/pages/routable-modals.vue new file mode 100644 index 00000000..05d1a451 --- /dev/null +++ b/demo-app/pages/routable-modals.vue @@ -0,0 +1,12 @@ + diff --git a/demo-app/pages/routable-popup.vue b/demo-app/pages/routable-popup.vue new file mode 100644 index 00000000..177d96d8 --- /dev/null +++ b/demo-app/pages/routable-popup.vue @@ -0,0 +1,16 @@ + diff --git a/demo-app/pages/searchbar-expandable.vue b/demo-app/pages/searchbar-expandable.vue new file mode 100644 index 00000000..fb46f8bf --- /dev/null +++ b/demo-app/pages/searchbar-expandable.vue @@ -0,0 +1,60 @@ + diff --git a/demo-app/pages/searchbar.vue b/demo-app/pages/searchbar.vue new file mode 100644 index 00000000..c234fd47 --- /dev/null +++ b/demo-app/pages/searchbar.vue @@ -0,0 +1,57 @@ + diff --git a/demo-app/pages/sheet-modal.vue b/demo-app/pages/sheet-modal.vue new file mode 100644 index 00000000..c89d9d99 --- /dev/null +++ b/demo-app/pages/sheet-modal.vue @@ -0,0 +1,85 @@ + + diff --git a/demo-app/pages/smart-select.vue b/demo-app/pages/smart-select.vue new file mode 100644 index 00000000..e653f7ee --- /dev/null +++ b/demo-app/pages/smart-select.vue @@ -0,0 +1,62 @@ + diff --git a/demo-app/pages/sortable.vue b/demo-app/pages/sortable.vue new file mode 100644 index 00000000..bccd71b3 --- /dev/null +++ b/demo-app/pages/sortable.vue @@ -0,0 +1,76 @@ + diff --git a/demo-app/pages/statusbar.vue b/demo-app/pages/statusbar.vue new file mode 100644 index 00000000..c98e9c25 --- /dev/null +++ b/demo-app/pages/statusbar.vue @@ -0,0 +1,25 @@ + + diff --git a/demo-app/pages/stepper.vue b/demo-app/pages/stepper.vue new file mode 100644 index 00000000..776f5c9a --- /dev/null +++ b/demo-app/pages/stepper.vue @@ -0,0 +1,305 @@ + + diff --git a/demo-app/pages/subnavbar-title.vue b/demo-app/pages/subnavbar-title.vue new file mode 100644 index 00000000..4909a933 --- /dev/null +++ b/demo-app/pages/subnavbar-title.vue @@ -0,0 +1,17 @@ + diff --git a/demo-app/pages/subnavbar.vue b/demo-app/pages/subnavbar.vue new file mode 100644 index 00000000..f7e2509c --- /dev/null +++ b/demo-app/pages/subnavbar.vue @@ -0,0 +1,19 @@ + diff --git a/demo-app/pages/swipeout.vue b/demo-app/pages/swipeout.vue new file mode 100644 index 00000000..266f66ed --- /dev/null +++ b/demo-app/pages/swipeout.vue @@ -0,0 +1,266 @@ + + diff --git a/demo-app/pages/swiper-3d-coverflow.vue b/demo-app/pages/swiper-3d-coverflow.vue new file mode 100644 index 00000000..67a6ea96 --- /dev/null +++ b/demo-app/pages/swiper-3d-coverflow.vue @@ -0,0 +1,19 @@ + diff --git a/demo-app/pages/swiper-3d-cube.vue b/demo-app/pages/swiper-3d-cube.vue new file mode 100644 index 00000000..b84c66b0 --- /dev/null +++ b/demo-app/pages/swiper-3d-cube.vue @@ -0,0 +1,18 @@ + diff --git a/demo-app/pages/swiper-3d-flip.vue b/demo-app/pages/swiper-3d-flip.vue new file mode 100644 index 00000000..70719a3e --- /dev/null +++ b/demo-app/pages/swiper-3d-flip.vue @@ -0,0 +1,17 @@ + diff --git a/demo-app/pages/swiper-custom-controls.vue b/demo-app/pages/swiper-custom-controls.vue new file mode 100644 index 00000000..5d0372ed --- /dev/null +++ b/demo-app/pages/swiper-custom-controls.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-fade.vue b/demo-app/pages/swiper-fade.vue new file mode 100644 index 00000000..2acc8807 --- /dev/null +++ b/demo-app/pages/swiper-fade.vue @@ -0,0 +1,14 @@ + diff --git a/demo-app/pages/swiper-gallery.vue b/demo-app/pages/swiper-gallery.vue new file mode 100644 index 00000000..5c607dfd --- /dev/null +++ b/demo-app/pages/swiper-gallery.vue @@ -0,0 +1,74 @@ + + diff --git a/demo-app/pages/swiper-horizontal.vue b/demo-app/pages/swiper-horizontal.vue new file mode 100644 index 00000000..ad87d82e --- /dev/null +++ b/demo-app/pages/swiper-horizontal.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-lazy.vue b/demo-app/pages/swiper-lazy.vue new file mode 100644 index 00000000..35e3cc22 --- /dev/null +++ b/demo-app/pages/swiper-lazy.vue @@ -0,0 +1,30 @@ + diff --git a/demo-app/pages/swiper-loop.vue b/demo-app/pages/swiper-loop.vue new file mode 100644 index 00000000..1241eea8 --- /dev/null +++ b/demo-app/pages/swiper-loop.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-multiple.vue b/demo-app/pages/swiper-multiple.vue new file mode 100644 index 00000000..d0cf9e06 --- /dev/null +++ b/demo-app/pages/swiper-multiple.vue @@ -0,0 +1,96 @@ + diff --git a/demo-app/pages/swiper-nested.vue b/demo-app/pages/swiper-nested.vue new file mode 100644 index 00000000..d53e0c8e --- /dev/null +++ b/demo-app/pages/swiper-nested.vue @@ -0,0 +1,23 @@ + diff --git a/demo-app/pages/swiper-pagination-fraction.vue b/demo-app/pages/swiper-pagination-fraction.vue new file mode 100644 index 00000000..66a4f1a2 --- /dev/null +++ b/demo-app/pages/swiper-pagination-fraction.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-pagination-progress.vue b/demo-app/pages/swiper-pagination-progress.vue new file mode 100644 index 00000000..1442aa94 --- /dev/null +++ b/demo-app/pages/swiper-pagination-progress.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-parallax.vue b/demo-app/pages/swiper-parallax.vue new file mode 100644 index 00000000..dc9ef661 --- /dev/null +++ b/demo-app/pages/swiper-parallax.vue @@ -0,0 +1,34 @@ + diff --git a/demo-app/pages/swiper-scrollbar.vue b/demo-app/pages/swiper-scrollbar.vue new file mode 100644 index 00000000..b3af68f9 --- /dev/null +++ b/demo-app/pages/swiper-scrollbar.vue @@ -0,0 +1,21 @@ + diff --git a/demo-app/pages/swiper-space-between.vue b/demo-app/pages/swiper-space-between.vue new file mode 100644 index 00000000..5e0196db --- /dev/null +++ b/demo-app/pages/swiper-space-between.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-vertical.vue b/demo-app/pages/swiper-vertical.vue new file mode 100644 index 00000000..869a1af6 --- /dev/null +++ b/demo-app/pages/swiper-vertical.vue @@ -0,0 +1,20 @@ + diff --git a/demo-app/pages/swiper-zoom.vue b/demo-app/pages/swiper-zoom.vue new file mode 100644 index 00000000..ddf493da --- /dev/null +++ b/demo-app/pages/swiper-zoom.vue @@ -0,0 +1,30 @@ + diff --git a/demo-app/pages/swiper.vue b/demo-app/pages/swiper.vue new file mode 100644 index 00000000..900dc1a9 --- /dev/null +++ b/demo-app/pages/swiper.vue @@ -0,0 +1,70 @@ + diff --git a/demo-app/pages/tabbar-labels.vue b/demo-app/pages/tabbar-labels.vue new file mode 100644 index 00000000..dc981b15 --- /dev/null +++ b/demo-app/pages/tabbar-labels.vue @@ -0,0 +1,63 @@ + + diff --git a/demo-app/pages/tabbar-scrollable.vue b/demo-app/pages/tabbar-scrollable.vue new file mode 100644 index 00000000..885835fe --- /dev/null +++ b/demo-app/pages/tabbar-scrollable.vue @@ -0,0 +1,50 @@ + + diff --git a/demo-app/pages/tabbar.vue b/demo-app/pages/tabbar.vue new file mode 100644 index 00000000..5b03a4e5 --- /dev/null +++ b/demo-app/pages/tabbar.vue @@ -0,0 +1,63 @@ + + diff --git a/demo-app/pages/tabs-animated.vue b/demo-app/pages/tabs-animated.vue new file mode 100644 index 00000000..56b6756b --- /dev/null +++ b/demo-app/pages/tabs-animated.vue @@ -0,0 +1,48 @@ + diff --git a/demo-app/pages/tabs-routable.vue b/demo-app/pages/tabs-routable.vue new file mode 100644 index 00000000..d5a557ef --- /dev/null +++ b/demo-app/pages/tabs-routable.vue @@ -0,0 +1,15 @@ + diff --git a/demo-app/pages/tabs-static.vue b/demo-app/pages/tabs-static.vue new file mode 100644 index 00000000..189f03e1 --- /dev/null +++ b/demo-app/pages/tabs-static.vue @@ -0,0 +1,48 @@ + diff --git a/demo-app/pages/tabs-swipeable.vue b/demo-app/pages/tabs-swipeable.vue new file mode 100644 index 00000000..98489ad3 --- /dev/null +++ b/demo-app/pages/tabs-swipeable.vue @@ -0,0 +1,48 @@ + diff --git a/demo-app/pages/tabs.vue b/demo-app/pages/tabs.vue new file mode 100644 index 00000000..a44b0da9 --- /dev/null +++ b/demo-app/pages/tabs.vue @@ -0,0 +1,11 @@ + diff --git a/demo-app/pages/timeline-horizontal-calendar.vue b/demo-app/pages/timeline-horizontal-calendar.vue new file mode 100644 index 00000000..72be76dd --- /dev/null +++ b/demo-app/pages/timeline-horizontal-calendar.vue @@ -0,0 +1,749 @@ + diff --git a/demo-app/pages/timeline-horizontal.vue b/demo-app/pages/timeline-horizontal.vue new file mode 100644 index 00000000..c0d77abc --- /dev/null +++ b/demo-app/pages/timeline-horizontal.vue @@ -0,0 +1,107 @@ + diff --git a/demo-app/pages/timeline-vertical.vue b/demo-app/pages/timeline-vertical.vue new file mode 100644 index 00000000..10265623 --- /dev/null +++ b/demo-app/pages/timeline-vertical.vue @@ -0,0 +1,224 @@ + diff --git a/demo-app/pages/timeline.vue b/demo-app/pages/timeline.vue new file mode 100644 index 00000000..6c4e5fe4 --- /dev/null +++ b/demo-app/pages/timeline.vue @@ -0,0 +1,10 @@ + diff --git a/demo-app/pages/toast.vue b/demo-app/pages/toast.vue new file mode 100644 index 00000000..65136c07 --- /dev/null +++ b/demo-app/pages/toast.vue @@ -0,0 +1,162 @@ + + diff --git a/demo-app/pages/toggle.vue b/demo-app/pages/toggle.vue new file mode 100644 index 00000000..54c8f64f --- /dev/null +++ b/demo-app/pages/toggle.vue @@ -0,0 +1,40 @@ + diff --git a/demo-app/pages/toolbar-hide-scroll.vue b/demo-app/pages/toolbar-hide-scroll.vue new file mode 100644 index 00000000..3e40acfc --- /dev/null +++ b/demo-app/pages/toolbar-hide-scroll.vue @@ -0,0 +1,44 @@ + diff --git a/demo-app/pages/toolbar-tabbar.vue b/demo-app/pages/toolbar-tabbar.vue new file mode 100644 index 00000000..bbe317c5 --- /dev/null +++ b/demo-app/pages/toolbar-tabbar.vue @@ -0,0 +1,32 @@ + + diff --git a/demo-app/pages/tooltip.vue b/demo-app/pages/tooltip.vue new file mode 100644 index 00000000..99a2faf1 --- /dev/null +++ b/demo-app/pages/tooltip.vue @@ -0,0 +1,48 @@ + + diff --git a/demo-app/pages/virtual-list.vue b/demo-app/pages/virtual-list.vue new file mode 100644 index 00000000..d469f2b7 --- /dev/null +++ b/demo-app/pages/virtual-list.vue @@ -0,0 +1,71 @@ + + diff --git a/demo-app/routes.js b/demo-app/routes.js new file mode 100644 index 00000000..cb1188ec --- /dev/null +++ b/demo-app/routes.js @@ -0,0 +1,605 @@ +import Home from './pages/home.vue'; +import PanelLeft from './pages/panel-left.vue'; +import PanelRight from './pages/panel-right.vue'; +import About from './pages/about.vue'; + +import Accordion from './pages/accordion.vue'; +import ActionSheet from './pages/action-sheet.vue'; +import Autocomplete from './pages/autocomplete.vue'; +import Badge from './pages/badge.vue'; +import Buttons from './pages/buttons.vue'; +import Calendar from './pages/calendar.vue'; +import CalendarPage from './pages/calendar-page.vue'; +import Cards from './pages/cards.vue'; +import Checkbox from './pages/checkbox.vue'; +import Chips from './pages/chips.vue'; +import ContactsList from './pages/contacts-list.vue'; +import ContentBlock from './pages/content-block.vue'; +import DataTable from './pages/data-table.vue'; +import Dialog from './pages/dialog.vue'; +import Elevation from './pages/elevation.vue'; +import Fab from './pages/fab.vue'; +import FabMorph from './pages/fab-morph.vue'; +import FormStorage from './pages/form-storage.vue'; +import Gauge from './pages/gauge.vue'; +import Grid from './pages/grid.vue'; +import Icons from './pages/icons.vue'; +import InfiniteScroll from './pages/infinite-scroll.vue'; +import Inputs from './pages/inputs.vue'; +import LazyLoad from './pages/lazy-load.vue'; +import List from './pages/list.vue'; +import ListIndex from './pages/list-index.vue'; +import LoginScreen from './pages/login-screen.vue'; +import LoginScreenPage from './pages/login-screen-page.vue'; +import Messages from './pages/messages.vue'; +import Navbar from './pages/navbar.vue'; +import NavbarHideScroll from './pages/navbar-hide-scroll.vue'; +import Notifications from './pages/notifications.vue'; +import Panel from './pages/panel.vue'; +import PhotoBrowser from './pages/photo-browser.vue'; +import Picker from './pages/picker.vue'; +import Popup from './pages/popup.vue'; +import Popover from './pages/popover.vue'; +import Preloader from './pages/preloader.vue'; +import Progressbar from './pages/progressbar.vue'; +import PullToRefresh from './pages/pull-to-refresh.vue'; +import Radio from './pages/radio.vue'; +import Range from './pages/range.vue'; +import Searchbar from './pages/searchbar.vue'; +import SearchbarExpandable from './pages/searchbar-expandable.vue'; +import SheetModal from './pages/sheet-modal.vue'; +import SmartSelect from './pages/smart-select.vue'; +import Sortable from './pages/sortable.vue'; +import Statusbar from './pages/statusbar.vue'; +import Stepper from './pages/stepper.vue'; +import Subnavbar from './pages/subnavbar.vue'; +import SubnavbarTitle from './pages/subnavbar-title.vue'; +import Swiper from './pages/swiper.vue'; +import SwiperHorizontal from './pages/swiper-horizontal.vue'; +import SwiperVertical from './pages/swiper-vertical.vue'; +import SwiperSpaceBetween from './pages/swiper-space-between.vue'; +import SwiperMultiple from './pages/swiper-multiple.vue'; +import SwiperNested from './pages/swiper-nested.vue'; +import SwiperLoop from './pages/swiper-loop.vue'; +import Swiper3dCube from './pages/swiper-3d-cube.vue'; +import Swiper3dCoverflow from './pages/swiper-3d-coverflow.vue'; +import Swiper3dFlip from './pages/swiper-3d-flip.vue'; +import SwiperFade from './pages/swiper-fade.vue'; +import SwiperScrollbar from './pages/swiper-scrollbar.vue'; +import SwiperGallery from './pages/swiper-gallery.vue'; +import SwiperCustomControls from './pages/swiper-custom-controls.vue'; +import SwiperParallax from './pages/swiper-parallax.vue'; +import SwiperLazy from './pages/swiper-lazy.vue'; +import SwiperPaginationProgress from './pages/swiper-pagination-progress.vue'; +import SwiperPaginationFraction from './pages/swiper-pagination-fraction.vue'; +import SwiperZoom from './pages/swiper-zoom.vue'; +import Swipeout from './pages/swipeout.vue'; +import Tabs from './pages/tabs.vue'; +import TabsStatic from './pages/tabs-static.vue'; +import TabsAnimated from './pages/tabs-animated.vue'; +import TabsSwipeable from './pages/tabs-swipeable.vue'; +import TabsRoutable from './pages/tabs-routable.vue'; +import Toast from './pages/toast.vue'; +import Toggle from './pages/toggle.vue'; +import ToolbarTabbar from './pages/toolbar-tabbar.vue'; +import Tabbar from './pages/tabbar.vue'; +import TabbarLabels from './pages/tabbar-labels.vue'; +import TabbarScrollable from './pages/tabbar-scrollable.vue'; +import ToolbarHideScroll from './pages/toolbar-hide-scroll.vue'; +import Tooltip from './pages/tooltip.vue'; +import Timeline from './pages/timeline.vue'; +import TimelineVertical from './pages/timeline-vertical.vue'; +import TimelineHorizontal from './pages/timeline-horizontal.vue'; +import TimelineHorizontalCalendar from './pages/timeline-horizontal-calendar.vue'; +import VirtualList from './pages/virtual-list.vue'; +import ColorThemes from './pages/color-themes.vue'; + +import RoutableModals from './pages/routable-modals.vue'; +import RoutablePopup from './pages/routable-popup.vue'; +import RoutableActions from './pages/routable-actions.vue'; + +import NotFound from './pages/404.vue'; + +// Pages +export default [ + // Index page + { + path: '/', + component: Home, + }, + // About page + { + path: '/about/', + component: About, + }, + // Left Panel + { + path: '/panel-left/', + component: PanelLeft, + }, + // Right Panel + { + path: '/panel-right/', + component: PanelRight, + }, + // Right Panel pages + { + path: '/panel-right-1/', + content: ` +

+ +
+
+

This is a right panel page 1

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quo saepe aspernatur inventore dolorum voluptates consequatur tempore ipsum! Quia, incidunt, aliquam sit veritatis nisi aliquid porro similique ipsa mollitia eaque ex!

+
+
+
+ `, + }, + { + path: '/panel-right-2/', + content: ` +
+ +
+
+

This is a right panel page 2

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quo saepe aspernatur inventore dolorum voluptates consequatur tempore ipsum! Quia, incidunt, aliquam sit veritatis nisi aliquid porro similique ipsa mollitia eaque ex!

+
+
+
+ `, + }, + + // Components + { + path: '/accordion/', + component: Accordion, + }, + { + path: '/action-sheet/', + component: ActionSheet, + }, + { + path: '/autocomplete/', + component: Autocomplete, + }, + { + path: '/badge/', + component: Badge, + }, + { + path: '/buttons/', + component: Buttons, + }, + { + path: '/calendar/', + component: Calendar, + }, + { + path: '/calendar-page/', + component: CalendarPage, + }, + { + path: '/cards/', + component: Cards, + }, + { + path: '/checkbox/', + component: Checkbox, + }, + { + path: '/chips/', + component: Chips, + }, + { + path: '/contacts-list/', + component: ContactsList, + }, + { + path: '/content-block/', + component: ContentBlock, + }, + { + path: '/data-table/', + component: DataTable, + }, + { + path: '/dialog/', + component: Dialog, + }, + { + path: '/elevation/', + component: Elevation, + }, + { + path: '/fab/', + component: Fab, + }, + { + path: '/fab-morph/', + component: FabMorph, + }, + { + path: '/form-storage/', + component: FormStorage, + }, + { + path: '/gauge/', + component: Gauge, + }, + { + path: '/grid/', + component: Grid, + }, + { + path: '/icons/', + component: Icons, + }, + { + path: '/infinite-scroll/', + component: InfiniteScroll, + }, + { + path: '/inputs/', + component: Inputs, + }, + { + path: '/lazy-load/', + component: LazyLoad, + }, + { + path: '/list/', + component: List, + }, + { + path: '/list-index/', + component: ListIndex, + }, + { + path: '/login-screen/', + component: LoginScreen, + }, + { + path: '/login-screen-page/', + component: LoginScreenPage, + }, + { + path: '/messages/', + component: Messages, + }, + { + path: '/navbar/', + component: Navbar, + }, + { + path: '/navbar-hide-scroll/', + component: NavbarHideScroll, + }, + { + path: '/notifications/', + component: Notifications, + }, + { + path: '/panel/', + component: Panel, + }, + { + path: '/photo-browser/', + component: PhotoBrowser, + }, + { + path: '/picker/', + component: Picker, + }, + { + path: '/popup/', + component: Popup, + }, + { + path: '/popover/', + component: Popover, + }, + { + path: '/preloader/', + component: Preloader, + }, + { + path: '/progressbar/', + component: Progressbar, + }, + { + path: '/pull-to-refresh/', + component: PullToRefresh, + }, + { + path: '/radio/', + component: Radio, + }, + { + path: '/range/', + component: Range, + }, + { + path: '/searchbar/', + component: Searchbar, + }, + { + path: '/searchbar-expandable/', + component: SearchbarExpandable, + }, + { + path: '/sheet-modal/', + component: SheetModal, + }, + { + path: '/smart-select/', + component: SmartSelect, + }, + { + path: '/sortable/', + component: Sortable, + }, + { + path: '/statusbar/', + component: Statusbar, + }, + { + path: '/stepper/', + component: Stepper, + }, + { + path: '/subnavbar/', + component: Subnavbar, + }, + { + path: '/subnavbar-title/', + component: SubnavbarTitle, + }, + { + path: '/swiper/', + component: Swiper, + routes: [ + { + path: 'swiper-horizontal/', + component: SwiperHorizontal, + }, + { + path: 'swiper-vertical/', + component: SwiperVertical, + }, + { + path: 'swiper-space-between/', + component: SwiperSpaceBetween, + }, + { + path: 'swiper-multiple/', + component: SwiperMultiple, + }, + { + path: 'swiper-nested/', + component: SwiperNested, + }, + { + path: 'swiper-loop/', + component: SwiperLoop, + }, + { + path: 'swiper-3d-cube/', + component: Swiper3dCube, + }, + { + path: 'swiper-3d-coverflow/', + component: Swiper3dCoverflow, + }, + { + path: 'swiper-3d-flip/', + component: Swiper3dFlip, + }, + { + path: 'swiper-fade/', + component: SwiperFade, + }, + { + path: 'swiper-scrollbar/', + component: SwiperScrollbar, + }, + { + path: 'swiper-gallery/', + component: SwiperGallery, + }, + { + path: 'swiper-custom-controls/', + component: SwiperCustomControls, + }, + { + path: 'swiper-parallax/', + component: SwiperParallax, + }, + { + path: 'swiper-lazy/', + component: SwiperLazy, + }, + { + path: 'swiper-pagination-progress/', + component: SwiperPaginationProgress, + }, + { + path: 'swiper-pagination-fraction/', + component: SwiperPaginationFraction, + }, + { + path: 'swiper-zoom/', + component: SwiperZoom, + }, + ], + }, + { + path: '/swipeout/', + component: Swipeout, + }, + { + path: '/tabs/', + component: Tabs, + }, + { + path: '/tabs-static/', + component: TabsStatic, + }, + { + path: '/tabs-animated/', + component: TabsAnimated, + }, + { + path: '/tabs-swipeable/', + component: TabsSwipeable, + }, + { + path: '/tabs-routable/', + component: TabsRoutable, + tabs: [ + { + path: '/', + id: 'tab1', + content: ` +
+

Tab 1 content

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad laboriosam accusamus?

+

Saepe explicabo voluptas ducimus provident, doloremque quo totam molestias! Suscipit blanditiis eaque exercitationem praesentium reprehenderit, fuga accusamus possimus sed, sint facilis ratione quod, qui dignissimos voluptas! Aliquam rerum consequuntur deleniti.

+

Totam reprehenderit amet commodi ipsum nam provident doloremque possimus odio itaque, est animi culpa modi consequatur reiciendis corporis libero laudantium sed eveniet unde delectus a maiores nihil dolores? Natus, perferendis.

+
+ `, + }, + { + path: '/tab2/', + id: 'tab2', + content: ` +
+

Tab 2 content

+

Suscipit, facere quasi atque totam. Repudiandae facilis at optio atque, rem nam, natus ratione cum enim voluptatem suscipit veniam! Repellat, est debitis. Modi nam mollitia explicabo, unde aliquid impedit! Adipisci!

+

Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque impedit.

+

Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque. Iure fugit, minima facere.

+
+ `, + }, + { + path: '/tab3/', + id: 'tab3', + content: ` +
+

Tab 3 content

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam enim quia molestiae facilis laudantium voluptates obcaecati officia cum, sit libero commodi. Ratione illo suscipit temporibus sequi iure ad laboriosam accusamus?

+

Deserunt adipisci tempora asperiores, quo, nisi ex delectus vitae consectetur iste fugiat iusto dolorem autem. Itaque, ipsa voluptas, a assumenda rem, dolorum porro accusantium, officiis veniam nostrum cum cumque impedit.

+

Laborum illum ipsa voluptatibus possimus nesciunt ex consequatur rem, natus ad praesentium rerum libero consectetur temporibus cupiditate atque aspernatur, eaque provident eligendi quaerat ea soluta doloremque. Iure fugit, minima facere.

+
+ `, + }, + ], + }, + { + path: '/toast/', + component: Toast, + }, + { + path: '/toggle/', + component: Toggle, + }, + { + path: '/toolbar-tabbar/', + component: ToolbarTabbar, + routes: [ + { + path: 'tabbar/', + component: Tabbar, + }, + { + path: 'tabbar-labels/', + component: TabbarLabels, + }, + { + path: 'tabbar-scrollable/', + component: TabbarScrollable, + }, + { + path: 'toolbar-hide-scroll/', + component: ToolbarHideScroll, + }, + ], + }, + { + path: '/tooltip/', + component: Tooltip, + }, + { + path: '/timeline/', + component: Timeline, + }, + { + path: '/timeline-vertical/', + component: TimelineVertical, + }, + { + path: '/timeline-horizontal/', + component: TimelineHorizontal, + }, + { + path: '/timeline-horizontal-calendar/', + component: TimelineHorizontalCalendar, + }, + { + path: '/virtual-list/', + component: VirtualList, + }, + + // Color Themes + { + path: '/color-themes/', + component: ColorThemes, + }, + + // Routable Modals + { + path: '/routable-modals/', + component: RoutableModals, + routes: [ + { + path: 'popup/', + popup: { + component: RoutablePopup, + }, + }, + { + path: 'actions/', + popup: { + component: RoutableActions, + }, + }, + ], + }, + // Default route (404 page). MUST BE THE LAST + { + path: '(.*)', + component: NotFound, + }, +]; diff --git a/design/icon.android.drawio.xml b/design/icon.android.drawio.xml new file mode 100644 index 00000000..cd680b00 --- /dev/null +++ b/design/icon.android.drawio.xml @@ -0,0 +1 @@ +xZbLbqMwFEC/hmUkgwmB5TTtpBq1M4toFE03IwcMeGq41DgF+vVjgnk4D7WLpBULfM+1jX18BVh4mdUrQYr0ESLKLQdFtYVvLcdxke+pW0uajjiOp0kiWNQxNII1e6MdtDXcsYiWBpIAXLLChCHkOQ2lwYgQUJndYuCRAQqS0COwDgk/phsWyVRTB6ExcU9ZksrDzJaEz4mAXa4fmENOu0xG+nl01zIlEVQThO8svBQAsmtl9ZLy1qtp7PuZ7LBmQXP5kQH/+FY++eXLA/uWNPRP8LL68XeGu1leCd9pF3qxsunl7HdH20mQhW+qlEm6LkjYZitVDoqlMuMqslUzZpwvgYPYj8XxQl2+4qUU8Ez7zN4Svjnegd7UKxWS1hOkd7SikFEpGtWlNgY0RlRNztAO/A6m0/MbKNGVkwwzjwZVQ0s8LfTxVzXHs99y9fP+bZPX24fNk5jZ7wt9RyEpi67GY1a32g+duiGJ5+ic0/G07MHwkc4T0s8bniPTcR9PLOOeTSUP8OKO3cs7NrWdNHtY2nHgI3Qdx14QfLVj7+p1HLsuxt7H6liAJJJBrkJ3fhnnXuAe1LX71c4XV3fu2IEX4097dyxQ8Hl1rcLxY7rPTf5W8N1/ \ No newline at end of file diff --git a/design/icon.ios.drawio.xml b/design/icon.ios.drawio.xml new file mode 100644 index 00000000..b600e7af --- /dev/null +++ b/design/icon.ios.drawio.xml @@ -0,0 +1 @@ +xZZbT4MwFIB/DY9LCmVsPOqcM8bLw2IWfTEdtFAtFEsn4K+3jHLpLtGHTcMDPd9pS/v1BLDgLCkXAmXxPQ8xsxwQlha8shzHBVNP3WpSNcRxPE0iQcOGgR4s6RduoK3hhoY4N5DknEmamTDgaYoDaTAkBC/MboSz0AAZivAeWAaI7dMVDWWsqQNAn7jBNIrlbmaNgvdI8E2qH5jyFDeZBLXz6K55jEJeDBCcW3AmOJdNKylnmNVeTWPXR7LdmgVO5W8GvLG1fJnmH3f0Iqrws/+xuH0dwWaWT8Q22oVerKxaOdvd4XoSYMHLIqYSLzMU1NlClYNisUyYimzVJJSxGWdcbMdCMlHXVPFcCv6O28zWErzc34He1CcWEpcDpHe0wDzBUlSqS2kMqIyoGJyh7U8bGA/Pr6NIV07UzdwbVA0t8bDQ+8diDEdPcvFw87VKy/Xd6kWM7J+F/qAQ5VlT44SWtfZdp24Q+p57zGl/WnZneE/nAenHDY+B6biNB5Zhy4aSO3hyx+7pHZvaDprdLW3ijwE4j2PP9//bsXf2OiYEriH4XR0LLpGkPFWhOz6Nc893d+ra/W/nk7M7B2CCCPmzd8cE+H9X1yrsP6bb3OBvBc6/AQ== \ No newline at end of file diff --git a/scripts/helper/path.js b/scripts/helper/path.js index f923a4f0..e7f69286 100644 --- a/scripts/helper/path.js +++ b/scripts/helper/path.js @@ -11,6 +11,6 @@ path.templates = (...nav) => path.resolve(__dirname, '../../templates', ...nav); // Project related shortcuts path.project = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../' : '../../', ...nav); -path.app = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../app' : '../../templates/app', ...nav); +path.app = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../app' : '../../demo-app', ...nav); module.exports = path; diff --git a/scripts/update-framework7-demo-files.js b/scripts/update-framework7-demo-files.js new file mode 100644 index 00000000..2375a84c --- /dev/null +++ b/scripts/update-framework7-demo-files.js @@ -0,0 +1,90 @@ +// Import modules +const path = require('path'); +const { execSync } = require('child_process'); +const fs = require('fs-extra'); // eslint-disable-line import/no-extraneous-dependencies + +// Define folders +const sourceFolder = path.resolve(__dirname, '../../framework7/kitchen-sink/vue/'); +const destFolder = path.resolve(__dirname, '../app/'); + +// Check folders +if (!fs.pathExistsSync(sourceFolder)) throw new Error(`Source folder ${sourceFolder} not found.`); +if (!fs.pathExistsSync(destFolder)) throw new Error(`Destination folder ${destFolder} not found.`); + +// Reset destination folder +fs.removeSync(path.resolve(destFolder, 'pages')); +fs.removeSync(path.resolve(destFolder, 'images')); + +// Copy files +fs.copySync(path.resolve(sourceFolder, 'src/pages'), path.resolve(destFolder, 'pages')); +fs.copySync(path.resolve(sourceFolder, 'img'), path.resolve(destFolder, 'images')); +fs.copySync(path.resolve(sourceFolder, 'src/routes.js'), path.resolve(destFolder, 'routes.js')); + +// Apply ESLint rules to harmonize files +execSync('npx app test --eslint'); + +// Modify imported vue files +let content; +fs.readdirSync(path.resolve(destFolder, 'pages')).forEach((file) => { + // Read file + content = fs.readFileSync(path.resolve(destFolder, 'pages', file), { encoding: 'utf-8' }); + // Remove code for import and export of components (bundle is used) + content = content.replace(/import \{[\s\S.]+\} from 'framework7-vue';\n\n?/, ''); + content = content.replace(/components: \{[a-zA-Z0-9,\n ]+},\n/, ''); + content = content.replace(/export default \{[\n ]+\};\n/, ''); + content = content.replace(/ +`; +try { + fs.outputFileSync(path.app('app.vue'), appComponentContent.trim()); + log.success('Created app.vue file.'); +} catch (e) { + log.error('Failed to create app.vue file.'); +} -if (path.project() === path.framework()) { - log.info('Skipped the app folder creation.'); -} else if (fs.pathExistsSync(destFolder)) { - log.info('Found app folder.'); -} else { - fs.copySync(sourceFolder, destFolder); - log.success('Created app folder.'); +// Build pages/home.vue +const pageComponentContent = ` + +`; +try { + fs.outputFileSync(path.app('pages/home.vue'), pageComponentContent.trim()); + log.success('Created pages/home.vue file.'); +} catch (e) { + log.error('Failed to create pages/home.vue file.'); } + +// Build routes.js +const routesFileContent = ` +import homePage from './pages/home.vue'; + +export default [ + { + path: '/', + component: homePage, + }, +]; + +`; +try { + fs.outputFileSync(path.app('routes.js'), routesFileContent.trim()); + log.success('Created routes.js file.'); +} catch (e) { + log.error('Failed to create routes.js file.'); +} + +// Copy icon file +try { + fs.copySync(path.scripts('helper/icon.png'), path.app('icon.png')); + log.success('Created icon.png file.'); +} catch (e) { + log.error('Failed to create icon.png file.'); +} + +// Create config.json file +if (run.script('fix-app-config').code !== 0) process.exit(1); + +// Run ESLint to harmonize files +if (run.script('test-eslint').code !== 0) process.exit(1); + +// Log success +log.success('Created app folder.'); diff --git a/scripts/fix-app-config.js b/scripts/fix-app-config.js index d002a228..460e9b61 100644 --- a/scripts/fix-app-config.js +++ b/scripts/fix-app-config.js @@ -8,7 +8,7 @@ const path = require('./helper/path'); if (!fs.pathExistsSync(path.app())) process.exit(0); // Load schema -const schemaFile = path.templates('app-config-schema.json'); +const schemaFile = path.scripts('helper/app-config-schema.json'); let schema = null; try { schema = fs.readJsonSync(schemaFile); diff --git a/templates/app-config-schema.json b/scripts/helper/app-config-schema.json similarity index 98% rename from templates/app-config-schema.json rename to scripts/helper/app-config-schema.json index b13bfbd4..ef5e8fb0 100644 --- a/templates/app-config-schema.json +++ b/scripts/helper/app-config-schema.json @@ -6,7 +6,7 @@ "properties": { "name": { "type": "string", - "default": "Your Application Name" + "default": "Application Name" }, "shortName": { "type": "string", @@ -14,7 +14,7 @@ }, "description": { "type": "string", - "default": "Description of your application." + "default": "Description of the application." }, "appID": { "type": "string", diff --git a/templates/app/icon.png b/scripts/helper/icon.png similarity index 100% rename from templates/app/icon.png rename to scripts/helper/icon.png diff --git a/scripts/helper/path.js b/scripts/helper/path.js index e7f69286..58e5d813 100644 --- a/scripts/helper/path.js +++ b/scripts/helper/path.js @@ -7,7 +7,6 @@ const isInstalled = fs.pathExistsSync(path.resolve(__dirname, '../../../../packa path.framework = (...nav) => path.resolve(__dirname, '../../', ...nav); path.cache = (...nav) => path.resolve(__dirname, '../../.cache', ...nav); path.scripts = (...nav) => path.resolve(__dirname, '../', ...nav); -path.templates = (...nav) => path.resolve(__dirname, '../../templates', ...nav); // Project related shortcuts path.project = (...nav) => path.resolve(__dirname, isInstalled ? '../../../../' : '../../', ...nav); diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 9f1b1e1e..cfa7446f 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -1,6 +1,5 @@ // Import modules const fs = require('fs-extra'); -const json = require('json-schema-fix'); const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); @@ -8,17 +7,6 @@ const run = require('./helper/run'); // Cancel if no App Framework development mode if (!fs.pathExistsSync(path.project('.enableDevelopmentMode'))) process.exit(0); -// Reset templates/app/config.json to default values according schema -try { - const schemaFile = path.templates('app-config-schema.json'); - const templateConfigFile = path.templates('app/config.json'); - const schema = fs.readJsonSync(schemaFile); - fs.outputJsonSync(templateConfigFile, json.create(schema), { spaces: 2 }); - log.success('Reset templates/app/config.json file.'); -} catch (e) { - log.error('Failed to reset the templates/app/config.json file.'); -} - // Run tests if (run.script('test').code !== 0) process.exit(1); // Check changelog update diff --git a/scripts/update-index-file.js b/scripts/update-index-file.js index 9d9659c4..25e67417 100644 --- a/scripts/update-index-file.js +++ b/scripts/update-index-file.js @@ -13,35 +13,32 @@ try { log.error('Failed to load app config file.'); } -// Read index file template -const templateFile = path.templates('index.html'); -let templateFileContent = ''; -try { - templateFileContent = fs.readFileSync(templateFile, { encoding: 'utf-8' }); - log.success('Read index.html template file.'); -} catch (e) { - log.error('Failed to read index.html template file.'); -} - -// Replace variables in index file -const variables = { - language: config.meta.language, - androidThemeColor: config.android.themeColor, - description: config.meta.description, - name: config.meta.name, - relatedITunesApplicationID: config.ios.relatedITunesApplicationID, -}; -let indexFileContent = templateFileContent; -Object.keys(variables).forEach((key) => { - const re = new RegExp(`\\{${key}\\}`, 'g'); - indexFileContent = indexFileContent.replace(re, variables[key]); -}); +// Create index.html file content +const indexFileContent = ` + + + + + + + + + + + + ${config.meta.name} + + +
+ + + +`; // Update index.html file -const indexFile = path.cache('index.html'); try { - fs.writeFileSync(indexFile, indexFileContent); - log.success('Updated index.html file.'); + fs.outputFileSync(path.cache('index.html'), indexFileContent.trim()); + log.success('Created index.html file.'); } catch (e) { - log.error('Failed to update index.html file.'); + log.error('Failed to create index.html file.'); } diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index f13b1959..b5122a94 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -3,24 +3,38 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); -// Read main file template -const templateFile = path.templates('main.js'); -let templateFileContent = ''; -try { - templateFileContent = fs.readFileSync(templateFile, { encoding: 'utf-8' }); - log.success('Read main.js template file.'); -} catch (e) { - log.error('Failed to read main.js template file.'); -} +// Define variables +const relAppPath = path.relative(path.cache(), path.app()); + +// Create main file content +const mainFileContent = ` +import Vue from 'vue'; +import Framework7 from 'framework7/framework7.esm.bundle'; +import 'framework7/css/framework7.css'; +import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; +import { Plugins } from '@capacitor/core'; +import App from '${relAppPath}/app.vue'; +import 'framework7-icons'; +import 'material-icons/iconfont/material-icons.css'; + +Vue.config.productionTip = false; + +Framework7.use(Framework7Vue); -// Replace paths -const relativeAppFolderPath = path.relative(path.cache(), path.app('app.vue')); -const mainFileContent = templateFileContent.replace(/\.\/app\/app.vue/g, `${relativeAppFolderPath.replace(/\\/g, '\\\\')}`); +export default new Vue({ + el: '#app', + render: c => c(App), + mounted() { + this.$f7ready(() => { + Plugins.SplashScreen.hide().catch(() => {}); + }); + }, +}); +`; // Update main.js file -const mainFile = path.cache('main.js'); try { - fs.writeFileSync(mainFile, mainFileContent); + fs.outputFileSync(path.cache('main.js'), mainFileContent.trim()); log.success('Updated main.js file.'); } catch (e) { log.error('Failed to update main.js file.'); diff --git a/scripts/update-manifest-file.js b/scripts/update-manifest-file.js index fcef9300..d584892d 100644 --- a/scripts/update-manifest-file.js +++ b/scripts/update-manifest-file.js @@ -13,35 +13,40 @@ try { log.error('Failed to load app config file.'); } -// Read manifest file template -const templateFile = path.templates('manifest.webmanifest'); -let templateFileContent = ''; -try { - templateFileContent = fs.readFileSync(templateFile, { encoding: 'utf-8' }); - log.success('Read manifest.webmanifest template file.'); -} catch (e) { - log.error('Failed to read manifest.webmanifest template file.'); -} - -// Replace variables in manifest file -const variables = { +// Define manifest +const manifest = { name: config.meta.name, - shortName: config.meta.shortName, + short_name: config.meta.shortName, description: config.meta.description, - androidBackgroundColor: config.android.backgroundColor, - androidThemeColor: config.android.themeColor, - relatedPlayStoreApplicationID: config.android.relatedPlayStoreApplicationID, + display: 'standalone', + background_color: config.android.backgroundColor, + theme_color: config.android.themeColor, + icons: [ + { + src: './icons/icon-192px.png', + sizes: '192x192', + type: 'image/png', + }, + { + src: './icons/icon-512px.png', + sizes: '512x512', + type: 'image/png', + }, + ], + scope: '/', + start_url: '.', + related_applications: [ + { + platform: 'play', + id: config.android.relatedPlayStoreApplicationID, + }, + ], + prefer_related_applications: true, }; -let manifestFileContent = templateFileContent; -Object.keys(variables).forEach((key) => { - const re = new RegExp(`\\{${key}\\}`, 'g'); - manifestFileContent = manifestFileContent.replace(re, variables[key]); -}); // Update manifest file -const manifestFile = path.cache('manifest.webmanifest'); try { - fs.writeFileSync(manifestFile, manifestFileContent); + fs.outputJsonSync(path.cache('manifest.webmanifest'), manifest); log.success('Updated manifest.webmanifest file.'); } catch (e) { log.error('Failed to update manifest.webmanifest file.'); diff --git a/templates/.htaccess b/templates/.htaccess deleted file mode 100644 index 722ec3f4..00000000 --- a/templates/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ - - Header set Cache-Control "max-age=31536000, public" - diff --git a/templates/app/app.css b/templates/app/app.css deleted file mode 100644 index e69de29b..00000000 diff --git a/templates/app/app.vue b/templates/app/app.vue deleted file mode 100644 index ddc58773..00000000 --- a/templates/app/app.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/templates/app/config.json b/templates/app/config.json deleted file mode 100644 index 4cf8ab38..00000000 --- a/templates/app/config.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "meta": { - "name": "Your Application Name", - "shortName": "App Name", - "description": "Description of your application.", - "appID": "", - "language": "en" - }, - "iconFonts": { - "useFramework7Icons": false, - "useMaterialDesignIcons": false - }, - "pwa": { - "buildOnBuildCommand": true, - "openInBrowserAfterBuild": true, - "includeOfflineServiceWorker": true, - "iconFile": "icon.png" - }, - "ios": { - "buildOnBuildCommand": false, - "openXcodeAfterBuild": true, - "relatedITunesApplicationID": "", - "iconFile": "icon.png", - "splashScreenIconFile": "icon.png", - "splashScreenBackgroundColor": "#2196f3" - }, - "android": { - "buildOnBuildCommand": false, - "openAndroidStudioAfterBuild": true, - "themeColor": "#2196f3", - "backgroundColor": "#2196f3", - "relatedPlayStoreApplicationID": "" - }, - "eslint": { - "runOnTestCommand": true, - "runOnDevCommand": true, - "runOnBuildCommand": true, - "openReportWhenPassed": false, - "openReportWhenFailed": true, - "extendDefaultConfig": {} - }, - "jest": { - "runOnTestCommand": true, - "runOnDevCommand": true, - "runOnBuildCommand": true, - "openReportWhenPassed": false, - "openReportWhenFailed": true - }, - "editorconfig": { - "addLinesToConfigFile": [] - }, - "git": { - "addLinesToIgnoreFile": [] - }, - "ftp": { - "defaultHost": "", - "defaultPort": "", - "defaultUserName": "", - "defaultPathOnServer": "" - }, - "firebase": { - "defaultProjectID": "" - }, - "debugMode": false -} diff --git a/templates/app/pages/home.vue b/templates/app/pages/home.vue deleted file mode 100644 index 5d38be93..00000000 --- a/templates/app/pages/home.vue +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/templates/app/routes.js b/templates/app/routes.js deleted file mode 100644 index 29fbb614..00000000 --- a/templates/app/routes.js +++ /dev/null @@ -1,8 +0,0 @@ -import HomePage from './pages/home.vue'; - -export default [ - { - path: '/', - component: HomePage, - }, -]; diff --git a/templates/icon.drawio.xml b/templates/icon.drawio.xml deleted file mode 100644 index fd5152d9..00000000 --- a/templates/icon.drawio.xml +++ /dev/null @@ -1 +0,0 @@ -jZNNU4MwEIZ/DcfOQDL9OlasdRw99eDoxUlhgdjA0hAE/PUGEr6snZFLkufNviy7i0P9tD5IlicvGIJwiBvWDr13CFmuiauXljSGUG9NDIklDw1zR3Dk32CgZ2HJQyhmSCEKxfM5DDDLIFAzxqTEan4tQhHOQM5iuALHgIlr+spDlVhKXHcUHoHHifqtnFhwjiWWmX1hhhkYJWW9j71aJCzEaoLo3qG+RFRml9Y+iLau84o93FCHnCVk6j8Bn+Kk3jfF5Znv4gbetpfD08eCGpcvJkpbC4eshPa7i1Db6qxVY6u0upTYC4uia+FOX1i6bl6Pqt7F7brL895Jp2TMjGKrMfiSrnzQZulquUq4gmPOglat9LxplqhU6JPXvp0L4aNA2cVS4m1XEbVZTXjUPZoXSuIZ/oqwXw5SQX2zpN7QKD38gCko2egr84BmdqomE+RtNwYm0+kZKLNzGw/OY//0xrawP46j0mmTf5HufwA= \ No newline at end of file diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index ad4c5c37..00000000 --- a/templates/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - {name} - - -
- - - diff --git a/templates/main.js b/templates/main.js deleted file mode 100644 index 55b477d7..00000000 --- a/templates/main.js +++ /dev/null @@ -1,22 +0,0 @@ -import Vue from 'vue'; -import Framework7 from 'framework7/framework7.esm.bundle'; -import 'framework7/css/framework7.css'; -import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; -import { Plugins } from '@capacitor/core'; -import App from './app/app.vue'; -import 'framework7-icons'; -import 'material-icons/iconfont/material-icons.css'; - -Vue.config.productionTip = false; - -Framework7.use(Framework7Vue); - -export default new Vue({ - el: '#app', - render: c => c(App), - mounted() { - this.$f7ready(() => { - Plugins.SplashScreen.hide().catch(() => {}); - }); - }, -}); diff --git a/templates/manifest.webmanifest b/templates/manifest.webmanifest deleted file mode 100644 index 00d22614..00000000 --- a/templates/manifest.webmanifest +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "{name}", - "short_name": "{shortName}", - "description": "{description}", - "display": "standalone", - "background_color" : "{androidBackgroundColor}", - "theme_color": "{androidThemeColor}", - "icons": [ - { - "src": "./icons/icon-192px.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "./icons/icon-512px.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "scope": "/", - "start_url": ".", - "related_applications": [ - { - "platform": "play", - "id": "{relatedPlayStoreApplicationID}" - } - ], - "prefer_related_applications": true -} diff --git a/templates/robots.txt b/templates/robots.txt deleted file mode 100644 index 0ad279c7..00000000 --- a/templates/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-Agent: * -Disallow: From 077194bf7d58ea6b68632eea951a047228c76d01 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 22:02:07 +0100 Subject: [PATCH 144/243] support app.css file closes #878 --- scripts/update-main-file.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index b5122a94..6fca10ef 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -5,6 +5,8 @@ const path = require('./helper/path'); // Define variables const relAppPath = path.relative(path.cache(), path.app()); +const importAppCSSFile = fs.pathExistsSync(path.app('app.css')) + ? `import "${relAppPath}/app.css";` : ''; // Create main file content const mainFileContent = ` @@ -16,6 +18,7 @@ import { Plugins } from '@capacitor/core'; import App from '${relAppPath}/app.vue'; import 'framework7-icons'; import 'material-icons/iconfont/material-icons.css'; +${importAppCSSFile} Vue.config.productionTip = false; From 4cee1291e4f9d3a535eee161f1794cdb83a091a2 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 22:13:32 +0100 Subject: [PATCH 145/243] support customized Vue closes #877 --- scripts/update-main-file.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index 6fca10ef..5db8eab0 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -5,12 +5,15 @@ const path = require('./helper/path'); // Define variables const relAppPath = path.relative(path.cache(), path.app()); +const importVue = fs.pathExistsSync(path.app('vue.js')) + ? `import VueDefault from 'vue'; import customizeVue from '${relAppPath}/vue.js'; const Vue = customizeVue(VueDefault);` + : 'import Vue from \'vue\''; const importAppCSSFile = fs.pathExistsSync(path.app('app.css')) ? `import "${relAppPath}/app.css";` : ''; // Create main file content const mainFileContent = ` -import Vue from 'vue'; +${importVue} import Framework7 from 'framework7/framework7.esm.bundle'; import 'framework7/css/framework7.css'; import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; From 4118400c3b6818594e3fde95e96959cdb07f3bd5 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 22:21:12 +0100 Subject: [PATCH 146/243] make icon font usage configurable closes #826 --- demo-app/config.json | 2 +- scripts/helper/app-config-schema.json | 4 ++-- scripts/update-main-file.js | 20 +++++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/demo-app/config.json b/demo-app/config.json index 2e09aae6..efb97f02 100644 --- a/demo-app/config.json +++ b/demo-app/config.json @@ -8,7 +8,7 @@ }, "iconFonts": { "useFramework7Icons": true, - "useMaterialDesignIcons": false + "useMaterialDesignIcons": true }, "pwa": { "buildOnBuildCommand": true, diff --git a/scripts/helper/app-config-schema.json b/scripts/helper/app-config-schema.json index ef5e8fb0..b7963873 100644 --- a/scripts/helper/app-config-schema.json +++ b/scripts/helper/app-config-schema.json @@ -32,11 +32,11 @@ "properties": { "useFramework7Icons": { "type": "boolean", - "default": false + "default": true }, "useMaterialDesignIcons": { "type": "boolean", - "default": false + "default": true } }, "additionalProperties": false diff --git a/scripts/update-main-file.js b/scripts/update-main-file.js index 5db8eab0..8fa11917 100644 --- a/scripts/update-main-file.js +++ b/scripts/update-main-file.js @@ -3,11 +3,25 @@ const fs = require('fs-extra'); const log = require('./helper/logger'); const path = require('./helper/path'); +// Load app configuration +const configFile = path.app('config.json'); +let config = {}; +try { + config = fs.readJsonSync(configFile); + log.success('Loaded app config file.'); +} catch (e) { + log.error('Failed to load app config file.'); +} + // Define variables const relAppPath = path.relative(path.cache(), path.app()); const importVue = fs.pathExistsSync(path.app('vue.js')) ? `import VueDefault from 'vue'; import customizeVue from '${relAppPath}/vue.js'; const Vue = customizeVue(VueDefault);` : 'import Vue from \'vue\''; +const importFramework7Icons = config.iconFonts.useFramework7Icons + ? 'import \'framework7-icons\';' : ''; +const importMaterialDesignIcons = config.iconFonts.useMaterialDesignIcons + ? 'import \'material-icons/iconfont/material-icons.css\';' : ''; const importAppCSSFile = fs.pathExistsSync(path.app('app.css')) ? `import "${relAppPath}/app.css";` : ''; @@ -16,12 +30,12 @@ const mainFileContent = ` ${importVue} import Framework7 from 'framework7/framework7.esm.bundle'; import 'framework7/css/framework7.css'; +${importFramework7Icons} +${importMaterialDesignIcons} import Framework7Vue from 'framework7-vue/framework7-vue.esm.bundle'; import { Plugins } from '@capacitor/core'; -import App from '${relAppPath}/app.vue'; -import 'framework7-icons'; -import 'material-icons/iconfont/material-icons.css'; ${importAppCSSFile} +import App from '${relAppPath}/app.vue'; Vue.config.productionTip = false; From b75dba2832b8894b496b7c23d351897ddc46f786 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 22:46:27 +0100 Subject: [PATCH 147/243] favicon support closes #873 --- package-lock.json | 310 ++++++++++++++++++++++++++++++++++- package.json | 1 + scripts/build-icons.js | 15 +- scripts/update-index-file.js | 1 + 4 files changed, 324 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d87e7ee..5d13c3ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.44", + "version": "3.0.0-alpha.47", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -11317,6 +11317,314 @@ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" }, + "png-to-ico": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/png-to-ico/-/png-to-ico-2.0.1.tgz", + "integrity": "sha512-m1+Kl6vEawrwAQfMutNnkKSaBhdjbyaWwfq04iCifZAApvy9H/0DA/CM3Il+rwLmijw6V9NzrF8TTxAMah4CZA==", + "requires": { + "@types/node": "^10.5.6", + "jimp": "^0.5.3", + "minimist": "^1.2.0" + }, + "dependencies": { + "@jimp/bmp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.5.4.tgz", + "integrity": "sha512-P/ezH1FuoM3FwS0Dm2ZGkph4x5/rPBzFLEZor7KQkmGUnYEIEG4o0BUcAWFmJOp2HgzbT6O2SfrpJNBOcVACzQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + } + }, + "@jimp/core": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.5.4.tgz", + "integrity": "sha512-n3uvHy2ndUKItmbhnRO8xmU8J6KR+v6CQxO9sbeUDpSc3VXc1PkqrA8ZsCVFCjnDFcGBXL+MJeCTyQzq5W9Crw==", + "requires": { + "@jimp/utils": "^0.5.0", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.5.4.tgz", + "integrity": "sha512-tLfyJoyouDl2J3RPFGfDzTtE+4S8ljqJUmLzy/cmx1n7+xS5TpLPdPskp7UaeAfNTqdF4CNAm94KYoxTZdj2mg==", + "requires": { + "@jimp/core": "^0.5.4", + "core-js": "^2.5.7" + } + }, + "@jimp/gif": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.5.0.tgz", + "integrity": "sha512-HVB4c7b8r/yCpjhCjVNPRFLuujTav5UPmcQcFJjU6aIxmne6e29rAjRJEv3UMamHDGSu/96PzOsPZBO5U+ZGww==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.5.4.tgz", + "integrity": "sha512-YaPWm+YSGCThNE/jLMckM3Qs6uaMxd/VsHOnEaqu5tGA4GFbfVaWHjKqkNGAFuiNV+HdgKlNcCOF3of+elvzqQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + } + }, + "@jimp/plugin-blit": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.5.4.tgz", + "integrity": "sha512-WqDYOugv76hF1wnKy7+xPGf9PUbcm9vPW28/jHWn1hjbb2GnusJ2fVEFad76J/1SPfhrQ2Uebf2QCWJuLmOqZg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-blur": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.5.0.tgz", + "integrity": "sha512-5k0PXCA1RTJdITL7yMAyZ5tGQjKLHqFvwdXj/PCoBo5PuMyr0x6qfxmQEySixGk/ZHdDxMi80vYxHdKHjNNgjg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-color": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.5.5.tgz", + "integrity": "sha512-hWeOqNCmLguGYLhSvBrpfCvlijsMEVaLZAOod62s1rzWnujozyKOzm2eZe+W3To6mHbp5RGJNVrIwHBWMab4ug==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.5.4.tgz", + "integrity": "sha512-8YJh4FI3S69unri0nJsWeqVLeVGA77N2R0Ws16iSuCCD/5UnWd9FeWRrSbKuidBG6TdMBaG2KUqSYZeHeH9GOQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-cover": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.5.4.tgz", + "integrity": "sha512-2Rur7b44WiDDgizUI2M2uYWc1RmfhU5KjKS1xXruobjQ0tXkf5xlrPXSushq0hB6Ne0Ss6wv0+/6eQ8WeGHU2w==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-crop": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.5.4.tgz", + "integrity": "sha512-6t0rqn4VazquGk48tO6hFBrQ+nkvC+A1RnR6UM/m8ZtG2/yjpwF0MXcpgJI1Fb+a4Ug7BY1fu2GPcZOhnAVK/g==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-displace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.5.0.tgz", + "integrity": "sha512-Bec7SQvnmKia4hOXEDjeNVx7vo/1bWqjuV6NO8xbNQcAO3gaCl91c9FjMDhsfAVb0Ou6imhbIuFPrLxorXsecQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-dither": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.5.0.tgz", + "integrity": "sha512-We2WJQsD/Lm8oqBFp/vUv9/5r2avyenL+wNNu/s2b1HqA5O4sPGrjHy9K6vIov0NroQGCQ3bNznLkTmjiHKBcg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-flip": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.5.0.tgz", + "integrity": "sha512-D/ehBQxLMNR7oNd80KXo4tnSET5zEm5mR70khYOTtTlfti/DlLp3qOdjPOzfLyAdqO7Ly4qCaXrIsnia+pfPrA==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.5.0.tgz", + "integrity": "sha512-Ln4kgxblv0/YzLBDb/J8DYPLhDzKH87Y8yHh5UKv3H+LPKnLaEG3L4iKTE9ivvdocnjmrtTFMYcWv2ERSPeHcg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-invert": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.5.0.tgz", + "integrity": "sha512-/vyKeIi3T7puf+8ruWovTjzDC585EnTwJ+lGOOUYiNPsdn4JDFe1B3xd+Ayv9aCQbXDIlPElZaM9vd/+wqDiIQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-mask": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.5.4.tgz", + "integrity": "sha512-mUJ04pCrUWaJGXPjgoVbzhIQB8cVobj2ZEFlGO3BEAjyylYMrdJlNlsER8dd7UuJ2L/a4ocWtFDdsnuicnBghQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-normalize": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.5.4.tgz", + "integrity": "sha512-Q5W0oEz9wxsjuhvHAJynI/OqXZcmqEAuRONQId7Aw5ulCXSOg9C4y2a67EO7aZAt55T+zMVxI9UpVUpzVvO6hw==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-print": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.5.4.tgz", + "integrity": "sha512-DOZr5TY9WyMWFBD37oz7KpTEBVioFIHQF/gH5b3O5jjFyj4JPMkw7k3kVBve9lIrzIYrvLqe0wH59vyAwpeEFg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.5.4.tgz", + "integrity": "sha512-lXNprNAT0QY1D1vG/1x6urUTlWuZe2dfL29P81ApW2Yfcio471+oqo45moX5FLS0q24xU600g7cHGf2/TzqSfA==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-rotate": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.5.4.tgz", + "integrity": "sha512-SIdUpMc8clObMchy8TnjgHgcXEQM992z5KavgiuOnCuBlsmSHtE3MrXTOyMW0Dn3gqapV9Y5vygrLm/BVtCCsg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-scale": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.5.0.tgz", + "integrity": "sha512-5InIOr3cNtrS5aQ/uaosNf28qLLc0InpNGKFmGFTv8oqZqLch6PtDTjDBZ1GGWsPdA/ljy4Qyy7mJO1QBmgQeQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugins": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.5.5.tgz", + "integrity": "sha512-9oF6LbSM/K7YkFCcxaPaD8NUkL/ZY8vT8NIGfQ/NpX+tKQtcsLHcRavHpUC+M1xXShv/QGx9OdBV/jgiu82QYg==", + "requires": { + "@jimp/plugin-blit": "^0.5.4", + "@jimp/plugin-blur": "^0.5.0", + "@jimp/plugin-color": "^0.5.5", + "@jimp/plugin-contain": "^0.5.4", + "@jimp/plugin-cover": "^0.5.4", + "@jimp/plugin-crop": "^0.5.4", + "@jimp/plugin-displace": "^0.5.0", + "@jimp/plugin-dither": "^0.5.0", + "@jimp/plugin-flip": "^0.5.0", + "@jimp/plugin-gaussian": "^0.5.0", + "@jimp/plugin-invert": "^0.5.0", + "@jimp/plugin-mask": "^0.5.4", + "@jimp/plugin-normalize": "^0.5.4", + "@jimp/plugin-print": "^0.5.4", + "@jimp/plugin-resize": "^0.5.4", + "@jimp/plugin-rotate": "^0.5.4", + "@jimp/plugin-scale": "^0.5.0", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.5.4.tgz", + "integrity": "sha512-J2NU7368zihF1HUZdmpXsL/Hhyf+I3ubmK+6Uz3Uoyvtk1VS7dO3L0io6fJQutfWmPZ4bvu6Ry022oHjbi6QCA==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.5.4.tgz", + "integrity": "sha512-hr7Zq3eWjAZ+itSwuAObIWMRNv7oHVM3xuEDC2ouP7HfE7woBtyhCyfA7u12KlgtM57gKWeogXqTlewRGVzx6g==", + "requires": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.5.4.tgz", + "integrity": "sha512-nbZXM6TsdpnYHIBd8ZuoxGpvmxc2SqiggY30/bhOP/VJQoDBzm2v/20Ywz5M0snpIK2SdYG52eZPNjfjqUP39w==", + "requires": { + "@jimp/bmp": "^0.5.4", + "@jimp/gif": "^0.5.0", + "@jimp/jpeg": "^0.5.4", + "@jimp/png": "^0.5.4", + "@jimp/tiff": "^0.5.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.5.0.tgz", + "integrity": "sha512-7H9RFVU+Li2XmEko0GGyzy7m7JjSc7qa+m8l3fUzYg2GtwASApjKF/LSG2AUQCUmDKFLdfIEVjxvKvZUJFEmpw==", + "requires": { + "core-js": "^2.5.7" + } + }, + "jimp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.5.6.tgz", + "integrity": "sha512-H0nHTu6KgAgQzDxa38ew2dXbnRzKm1w5uEyhMIxqwCQVjwgarOjjkV/avbNLxfxRHAFaNp4rGIc/qm8P+uhX9A==", + "requires": { + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.5.4", + "@jimp/plugins": "^0.5.5", + "@jimp/types": "^0.5.4", + "core-js": "^2.5.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "pngjs": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", diff --git a/package.json b/package.json index fec90fcc..fcbdc824 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "opn": "^5.4.0", "parcel-bundler": "^1.11.0", "parcel-plugin-sw-cache": "^0.2.6", + "png-to-ico": "^2.0.1", "prompt": "^1.0.0", "shelljs": "^0.8.3", "vue": "^2.5.21", diff --git a/scripts/build-icons.js b/scripts/build-icons.js index 46c7504d..7deb6c42 100644 --- a/scripts/build-icons.js +++ b/scripts/build-icons.js @@ -1,6 +1,7 @@ // Import modules const fs = require('fs-extra'); const jimp = require('jimp'); +const pngToIco = require('png-to-ico'); const path = require('./helper/path'); const log = require('./helper/logger'); @@ -16,11 +17,21 @@ try { // Build icons const buildIcons = async () => { + // Empty cache folder + fs.emptyDirSync(path.cache('icons')); + // Build favicon (not in PWA to use hash and better update of changed icons + // and favicon on dev server) + await pngToIco(path.app(config.pwa.iconFile)) + .then((icoFile) => { + fs.outputFileSync(path.cache('icons/favicon.ico'), icoFile); + log.success('Created the favicon file.'); + }) + .catch(() => { + log.error('Failed to cretate the favicon file.'); + }); // Build PWA icons if (config.pwa.buildOnBuildCommand) { try { - // Empty cache folder - fs.emptyDirSync(path.cache('icons/pwa')); // Create PWA icons let image; image = await jimp.read(path.app(config.pwa.iconFile)); diff --git a/scripts/update-index-file.js b/scripts/update-index-file.js index 25e67417..2195ad4b 100644 --- a/scripts/update-index-file.js +++ b/scripts/update-index-file.js @@ -25,6 +25,7 @@ const indexFileContent = ` + ${config.meta.name} From f3eaa319712033641bbc0a9858f8c53d8787a3de Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Wed, 9 Jan 2019 22:46:40 +0100 Subject: [PATCH 148/243] build icons on dev command --- scripts/dev.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/dev.js b/scripts/dev.js index f8905dc6..6a474c7d 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -17,6 +17,9 @@ if (run.script('fix-app-config').code !== 0) process.exit(1); if (config.eslint.runOnDevCommand && run.script('test-eslint').code !== 0) process.exit(1); if (config.jest.runOnDevCommand && run.script('test-jest').code !== 0) process.exit(1); +// Build icons +if (run.script('build-icons').code !== 0) process.exit(1); + // Define cache folder const cacheFolder = path.cache('dev'); From 2dc4d595d57c360e6494c496c98cdcf42cb0468c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 18:57:50 +0100 Subject: [PATCH 149/243] 3.0.1-0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d13c3ee..7eefc647 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.47", + "version": "3.0.1-0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fcbdc824..1aa0edfc 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.47", + "version": "3.0.1-0", "license": "MIT", "bin": { "app": "./cli/app.js" From 40eb9ada323cab93554a28afb1192c157f6baab5 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 18:58:21 +0100 Subject: [PATCH 150/243] 3.0.2-0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7eefc647..7811ddf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.1-0", + "version": "3.0.2-0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1aa0edfc..f1aaa850 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.1-0", + "version": "3.0.2-0", "license": "MIT", "bin": { "app": "./cli/app.js" From 8bc624d3de74a1c2f96a2d78a9b380da855d1607 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:14:57 +0100 Subject: [PATCH 151/243] Revert "3.0.2-0" This reverts commit 40eb9ada323cab93554a28afb1192c157f6baab5. --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7811ddf1..7eefc647 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.2-0", + "version": "3.0.1-0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f1aaa850..1aa0edfc 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.2-0", + "version": "3.0.1-0", "license": "MIT", "bin": { "app": "./cli/app.js" From ff4601c5fad0c950471b77d4dda5489df6433b13 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:15:02 +0100 Subject: [PATCH 152/243] Revert "3.0.1-0" This reverts commit 2dc4d595d57c360e6494c496c98cdcf42cb0468c. --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7eefc647..5d13c3ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.1-0", + "version": "3.0.0-alpha.47", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1aa0edfc..fcbdc824 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.1-0", + "version": "3.0.0-alpha.47", "license": "MIT", "bin": { "app": "./cli/app.js" From 89f5ca1e647b85c9709ba6047de28113d94689f7 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:38:29 +0100 Subject: [PATCH 153/243] release v3.0.0-alpha.50 --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fcbdc824..0c101576 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.50", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -44,8 +44,9 @@ "png-to-ico": "^2.0.1", "prompt": "^1.0.0", "shelljs": "^0.8.3", + "version-bump-prompt": "^4.2.2", "vue": "^2.5.21", "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} +} \ No newline at end of file From 01c0923ecd66b501e51add77268535fe90b79a15 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:39:24 +0100 Subject: [PATCH 154/243] Revert "release v3.0.0-alpha.50" This reverts commit 89f5ca1e647b85c9709ba6047de28113d94689f7. --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0c101576..fcbdc824 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.50", + "version": "3.0.0-alpha.47", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -44,9 +44,8 @@ "png-to-ico": "^2.0.1", "prompt": "^1.0.0", "shelljs": "^0.8.3", - "version-bump-prompt": "^4.2.2", "vue": "^2.5.21", "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} \ No newline at end of file +} From 3fba3d90521a9274ae5d28cb278e447b5524ba41 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:40:31 +0100 Subject: [PATCH 155/243] release v3.0.0-alpha.48 --- CHANGELOG.md | 2 +- package-lock.json | 24 +++++++++++++++++- package.json | 4 +-- scripts/prepublishOnly.js | 52 ++++++++++++++++++++++++++++----------- 4 files changed, 63 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e40639f0..f4832492 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.47 +### App Framework v3.0.0-alpha.50 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index 5d13c3ee..3159fc13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.48", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16032,6 +16032,28 @@ "extsprintf": "^1.2.0" } }, + "version-bump-prompt": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-4.2.2.tgz", + "integrity": "sha512-CIGU8HWNWmf5iAsG7LB30VE/kimj1HhSwYpYUmuU9zF05d0e8nplUfzTvfP+9u6KT481Pzt0GtBuT3ekWacTDw==", + "requires": { + "chalk": "^2.4.1", + "commander": "^2.19.0", + "cross-spawn": "^6.0.5", + "detect-indent": "^5.0.0", + "glob": "^7.1.3", + "inquirer": "^6.2.1", + "log-symbols": "^2.2.0", + "semver": "^5.6.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + } + } + }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", diff --git a/package.json b/package.json index fcbdc824..668211d3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.48", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -48,4 +48,4 @@ "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} +} \ No newline at end of file diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index cfa7446f..639c5465 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -1,5 +1,6 @@ // Import modules const fs = require('fs-extra'); +const { execSync } = require('child_process'); const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); @@ -9,20 +10,41 @@ if (!fs.pathExistsSync(path.project('.enableDevelopmentMode'))) process.exit(0); // Run tests if (run.script('test').code !== 0) process.exit(1); + +// Bump version +execSync('npx bump --prompt --commit --all', { stdio: 'inherit' }); + // Check changelog update -try { - const { version } = fs.readJsonSync(path.framework('package.json')); - const changelogFile = path.framework('CHANGELOG.md'); - const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); - const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); - const searchRes = changelogFileContent.match(searchRegExp); - if (searchRes === null) { - log.error(`No changelog entry found for version ${version}.`); - } else if (searchRes.length === 1) { - log.success(`Changelog entry found for version ${version}.`); - } else { - log.error(`${searchRes.length} changelog entries found for version ${version}.`); +const checkChangelog = () => { + try { + const { version } = fs.readJsonSync(path.framework('package.json')); + const changelogFile = path.framework('CHANGELOG.md'); + const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); + const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); + const searchRes = changelogFileContent.match(searchRegExp); + if (searchRes === null) { + log.warning(` + No changelog entry found for version ${version}. + Please correct the CHANGELOG.md file and press any key. + `); + process.stdin.once('data', () => { + checkChangelog(); + }); + } else if (searchRes.length === 1) { + log.success(`Changelog entry found for version ${version}.`); + } else { + log.warning(` + ${searchRes.length} changelog entries found for version ${version}. + Please correct the CHANGELOG.md file and press any key. + `); + process.stdin.once('data', () => { + checkChangelog(); + }); + } + } catch (e) { + log.error('Failed to check the changelog.'); } -} catch (e) { - log.error('Failed to check the changelog.'); -} +}; +checkChangelog(); + +log.success('done'); From 926a2e777989d3e50f6c73b322f5fa18541fa9e4 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:41:36 +0100 Subject: [PATCH 156/243] release v3.0.0-alpha.49 --- package.json | 2 +- scripts/prepublishOnly.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 668211d3..d97c2a5d 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.49", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 639c5465..228a2f15 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -47,4 +47,4 @@ const checkChangelog = () => { }; checkChangelog(); -log.success('done'); +// NO MORE CODE IN THIS FILE AFTER checkChangelog() (will be called immediately) From 4aaab4809c939d11cc752a270889b94e83587154 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:42:02 +0100 Subject: [PATCH 157/243] release v3.0.0-alpha.50 --- package.json | 2 +- scripts/prepublishOnly.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index d97c2a5d..21f3199e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.49", + "version": "3.0.0-alpha.50", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 228a2f15..0f16bb13 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -32,6 +32,7 @@ const checkChangelog = () => { }); } else if (searchRes.length === 1) { log.success(`Changelog entry found for version ${version}.`); + process.exit(0); } else { log.warning(` ${searchRes.length} changelog entries found for version ${version}. From 73a691986a081eec694a8b764c26f5dae687a574 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:42:44 +0100 Subject: [PATCH 158/243] release v3.0.0-alpha.51 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 21f3199e..9fc05161 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.50", + "version": "3.0.0-alpha.51", "license": "MIT", "bin": { "app": "./cli/app.js" From cad46968875f48db57a022e866b93d1e44a5891a Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:45:01 +0100 Subject: [PATCH 159/243] Revert "release v3.0.0-alpha.51" This reverts commit 73a691986a081eec694a8b764c26f5dae687a574. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9fc05161..21f3199e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.51", + "version": "3.0.0-alpha.50", "license": "MIT", "bin": { "app": "./cli/app.js" From d6083a2124df35f500d9221422882a547020af32 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:45:03 +0100 Subject: [PATCH 160/243] Revert "release v3.0.0-alpha.50" This reverts commit 4aaab4809c939d11cc752a270889b94e83587154. --- package.json | 2 +- scripts/prepublishOnly.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 21f3199e..d97c2a5d 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.50", + "version": "3.0.0-alpha.49", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 0f16bb13..228a2f15 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -32,7 +32,6 @@ const checkChangelog = () => { }); } else if (searchRes.length === 1) { log.success(`Changelog entry found for version ${version}.`); - process.exit(0); } else { log.warning(` ${searchRes.length} changelog entries found for version ${version}. From ee5b686f8e3b68aaffbc4ba35c6fbd945d3c68d0 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:45:04 +0100 Subject: [PATCH 161/243] Revert "release v3.0.0-alpha.49" This reverts commit 926a2e777989d3e50f6c73b322f5fa18541fa9e4. --- package.json | 2 +- scripts/prepublishOnly.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d97c2a5d..668211d3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.49", + "version": "3.0.0-alpha.48", "license": "MIT", "bin": { "app": "./cli/app.js" diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 228a2f15..639c5465 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -47,4 +47,4 @@ const checkChangelog = () => { }; checkChangelog(); -// NO MORE CODE IN THIS FILE AFTER checkChangelog() (will be called immediately) +log.success('done'); From 171a54532073bb6278ac93eb11358e2fffb80c9b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 19:45:37 +0100 Subject: [PATCH 162/243] Revert "release v3.0.0-alpha.48" This reverts commit 3fba3d90521a9274ae5d28cb278e447b5524ba41. --- CHANGELOG.md | 2 +- package-lock.json | 24 +----------------- package.json | 4 +-- scripts/prepublishOnly.js | 52 +++++++++++---------------------------- 4 files changed, 19 insertions(+), 63 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4832492..e40639f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.50 +### App Framework v3.0.0-alpha.47 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index 3159fc13..5d13c3ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.47", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16032,28 +16032,6 @@ "extsprintf": "^1.2.0" } }, - "version-bump-prompt": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-4.2.2.tgz", - "integrity": "sha512-CIGU8HWNWmf5iAsG7LB30VE/kimj1HhSwYpYUmuU9zF05d0e8nplUfzTvfP+9u6KT481Pzt0GtBuT3ekWacTDw==", - "requires": { - "chalk": "^2.4.1", - "commander": "^2.19.0", - "cross-spawn": "^6.0.5", - "detect-indent": "^5.0.0", - "glob": "^7.1.3", - "inquirer": "^6.2.1", - "log-symbols": "^2.2.0", - "semver": "^5.6.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" - } - } - }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", diff --git a/package.json b/package.json index 668211d3..fcbdc824 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.47", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -48,4 +48,4 @@ "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} \ No newline at end of file +} diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 639c5465..cfa7446f 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -1,6 +1,5 @@ // Import modules const fs = require('fs-extra'); -const { execSync } = require('child_process'); const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); @@ -10,41 +9,20 @@ if (!fs.pathExistsSync(path.project('.enableDevelopmentMode'))) process.exit(0); // Run tests if (run.script('test').code !== 0) process.exit(1); - -// Bump version -execSync('npx bump --prompt --commit --all', { stdio: 'inherit' }); - // Check changelog update -const checkChangelog = () => { - try { - const { version } = fs.readJsonSync(path.framework('package.json')); - const changelogFile = path.framework('CHANGELOG.md'); - const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); - const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); - const searchRes = changelogFileContent.match(searchRegExp); - if (searchRes === null) { - log.warning(` - No changelog entry found for version ${version}. - Please correct the CHANGELOG.md file and press any key. - `); - process.stdin.once('data', () => { - checkChangelog(); - }); - } else if (searchRes.length === 1) { - log.success(`Changelog entry found for version ${version}.`); - } else { - log.warning(` - ${searchRes.length} changelog entries found for version ${version}. - Please correct the CHANGELOG.md file and press any key. - `); - process.stdin.once('data', () => { - checkChangelog(); - }); - } - } catch (e) { - log.error('Failed to check the changelog.'); +try { + const { version } = fs.readJsonSync(path.framework('package.json')); + const changelogFile = path.framework('CHANGELOG.md'); + const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); + const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); + const searchRes = changelogFileContent.match(searchRegExp); + if (searchRes === null) { + log.error(`No changelog entry found for version ${version}.`); + } else if (searchRes.length === 1) { + log.success(`Changelog entry found for version ${version}.`); + } else { + log.error(`${searchRes.length} changelog entries found for version ${version}.`); } -}; -checkChangelog(); - -log.success('done'); +} catch (e) { + log.error('Failed to check the changelog.'); +} From 72df94482e8dfd3ffe8e3e799c6d4a8080ef2c02 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:13:51 +0100 Subject: [PATCH 163/243] improve prepublish script closes #863, closes #864 --- package-lock.json | 22 +++++++++++++++ package.json | 1 + scripts/prepublishOnly.js | 59 +++++++++++++++++++++++++++++---------- 3 files changed, 67 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d13c3ee..37210b95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16032,6 +16032,28 @@ "extsprintf": "^1.2.0" } }, + "version-bump-prompt": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-4.2.2.tgz", + "integrity": "sha512-CIGU8HWNWmf5iAsG7LB30VE/kimj1HhSwYpYUmuU9zF05d0e8nplUfzTvfP+9u6KT481Pzt0GtBuT3ekWacTDw==", + "requires": { + "chalk": "^2.4.1", + "commander": "^2.19.0", + "cross-spawn": "^6.0.5", + "detect-indent": "^5.0.0", + "glob": "^7.1.3", + "inquirer": "^6.2.1", + "log-symbols": "^2.2.0", + "semver": "^5.6.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + } + } + }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", diff --git a/package.json b/package.json index fcbdc824..8fba1cde 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "png-to-ico": "^2.0.1", "prompt": "^1.0.0", "shelljs": "^0.8.3", + "version-bump-prompt": "^4.2.2", "vue": "^2.5.21", "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index cfa7446f..874dc8f2 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -1,5 +1,6 @@ // Import modules const fs = require('fs-extra'); +const { execSync } = require('child_process'); const log = require('./helper/logger'); const path = require('./helper/path'); const run = require('./helper/run'); @@ -9,20 +10,48 @@ if (!fs.pathExistsSync(path.project('.enableDevelopmentMode'))) process.exit(0); // Run tests if (run.script('test').code !== 0) process.exit(1); + +// Check if Git folder is clean (no changed but not committed files) +const gitStatus = run.silent('git status --porcelain'); +if (gitStatus.stdout !== '') { + log.error('Please clean up your Git folder first and commit all changes.'); +} + +// Bump version +execSync('npx bump --prompt --commit --all --lock', { stdio: 'inherit' }); + // Check changelog update -try { - const { version } = fs.readJsonSync(path.framework('package.json')); - const changelogFile = path.framework('CHANGELOG.md'); - const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); - const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); - const searchRes = changelogFileContent.match(searchRegExp); - if (searchRes === null) { - log.error(`No changelog entry found for version ${version}.`); - } else if (searchRes.length === 1) { - log.success(`Changelog entry found for version ${version}.`); - } else { - log.error(`${searchRes.length} changelog entries found for version ${version}.`); +const checkChangelog = () => { + try { + const { version } = fs.readJsonSync(path.framework('package.json')); + const changelogFile = path.framework('CHANGELOG.md'); + const changelogFileContent = fs.readFileSync(changelogFile, { encoding: 'utf-8' }); + const searchRegExp = new RegExp(`\\n### App Framework v${version}`, 'g'); + const searchRes = changelogFileContent.match(searchRegExp); + if (searchRes === null) { + log.warning(` + No changelog entry found for version ${version}. + Please correct the CHANGELOG.md file and press any key. + `); + process.stdin.once('data', () => { + checkChangelog(); + }); + } else if (searchRes.length === 1) { + log.success(`Changelog entry found for version ${version}.`); + process.exit(0); + } else { + log.warning(` + ${searchRes.length} changelog entries found for version ${version}. + Please correct the CHANGELOG.md file and press any key. + `); + process.stdin.once('data', () => { + checkChangelog(); + }); + } + } catch (e) { + log.error('Failed to check the changelog.'); } -} catch (e) { - log.error('Failed to check the changelog.'); -} +}; +checkChangelog(); + +// NO MORE CODE IN THIS FILE AFTER checkChangelog() (will be called immediately) From 034973fa1b8323f28a1645933d14e96454a14378 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:14:30 +0100 Subject: [PATCH 164/243] release v3.0.0-alpha.48 --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 37210b95..bf46cc19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.48", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16620,4 +16620,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 8fba1cde..5ecb4ccb 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.48", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -49,4 +49,4 @@ "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} +} \ No newline at end of file From 53fda3e94c767364e25a02b813c27565117e0853 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:15:05 +0100 Subject: [PATCH 165/243] Revert "release v3.0.0-alpha.48" This reverts commit 034973fa1b8323f28a1645933d14e96454a14378. --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf46cc19..37210b95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.47", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16620,4 +16620,4 @@ } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 5ecb4ccb..8fba1cde 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.47", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -49,4 +49,4 @@ "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} \ No newline at end of file +} From 072bc56298d0a24b5eb1341e555b120aeb95f193 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:22:51 +0100 Subject: [PATCH 166/243] test --- scripts/prepublishOnly.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 874dc8f2..2ec064f1 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -18,7 +18,7 @@ if (gitStatus.stdout !== '') { } // Bump version -execSync('npx bump --prompt --commit --all --lock', { stdio: 'inherit' }); +execSync('npx bump --prompt --lock', { stdio: 'inherit' }); // Check changelog update const checkChangelog = () => { From b7e6e5dc74059c48c1a6551fb5569ba8bcfe575b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:23:01 +0100 Subject: [PATCH 167/243] Revert "test" This reverts commit 072bc56298d0a24b5eb1341e555b120aeb95f193. --- scripts/prepublishOnly.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 2ec064f1..874dc8f2 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -18,7 +18,7 @@ if (gitStatus.stdout !== '') { } // Bump version -execSync('npx bump --prompt --lock', { stdio: 'inherit' }); +execSync('npx bump --prompt --commit --all --lock', { stdio: 'inherit' }); // Check changelog update const checkChangelog = () => { From 5839ba50cb9c38fa181512fac62e13515a069202 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:28:32 +0100 Subject: [PATCH 168/243] test2 --- scripts/test.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 scripts/test.md diff --git a/scripts/test.md b/scripts/test.md new file mode 100644 index 00000000..e69de29b From f27a3bffedf075f796406d1fe2633a32e4acbdbe Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:28:42 +0100 Subject: [PATCH 169/243] Revert "test2" This reverts commit 5839ba50cb9c38fa181512fac62e13515a069202. --- scripts/test.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 scripts/test.md diff --git a/scripts/test.md b/scripts/test.md deleted file mode 100644 index e69de29b..00000000 From dd4a02c2004d2c7329d9aa03d4d3019d4ac0d548 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:35:30 +0100 Subject: [PATCH 170/243] test5 --- scripts/prepublishOnly.js | 2 +- scripts/test.md | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 scripts/test.md diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 874dc8f2..ee749350 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -54,4 +54,4 @@ const checkChangelog = () => { }; checkChangelog(); -// NO MORE CODE IN THIS FILE AFTER checkChangelog() (will be called immediately) +// NO MORE CODE IN THIS FILE AFTER checkChangelog() - will be called immediately diff --git a/scripts/test.md b/scripts/test.md new file mode 100644 index 00000000..e69de29b From fa745a104192be7254c9114a7035a73d1f4ac505 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:36:37 +0100 Subject: [PATCH 171/243] Revert "test5" This reverts commit dd4a02c2004d2c7329d9aa03d4d3019d4ac0d548. --- scripts/prepublishOnly.js | 2 +- scripts/test.md | 0 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 scripts/test.md diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index ee749350..874dc8f2 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -54,4 +54,4 @@ const checkChangelog = () => { }; checkChangelog(); -// NO MORE CODE IN THIS FILE AFTER checkChangelog() - will be called immediately +// NO MORE CODE IN THIS FILE AFTER checkChangelog() (will be called immediately) diff --git a/scripts/test.md b/scripts/test.md deleted file mode 100644 index e69de29b..00000000 From 3f5669c722fb5472c566b44b0a18766e147ac7af Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:39:41 +0100 Subject: [PATCH 172/243] improve prepublish script --- scripts/prepublishOnly.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 874dc8f2..8fb73396 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -18,7 +18,7 @@ if (gitStatus.stdout !== '') { } // Bump version -execSync('npx bump --prompt --commit --all --lock', { stdio: 'inherit' }); +execSync('npx bump --prompt --lock', { stdio: 'inherit' }); // Check changelog update const checkChangelog = () => { @@ -38,6 +38,7 @@ const checkChangelog = () => { }); } else if (searchRes.length === 1) { log.success(`Changelog entry found for version ${version}.`); + execSync(`git add --all && git commit -m "released v${version}"`) process.exit(0); } else { log.warning(` @@ -54,4 +55,4 @@ const checkChangelog = () => { }; checkChangelog(); -// NO MORE CODE IN THIS FILE AFTER checkChangelog() (will be called immediately) +// NO MORE CODE IN THIS FILE AFTER checkChangelog() - will be called immediately From 3f41310f3f23cd16ad0c6eb2c6753e72a50e842a Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:40:37 +0100 Subject: [PATCH 173/243] eslint fix --- scripts/prepublishOnly.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index 8fb73396..cb46a302 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -38,7 +38,7 @@ const checkChangelog = () => { }); } else if (searchRes.length === 1) { log.success(`Changelog entry found for version ${version}.`); - execSync(`git add --all && git commit -m "released v${version}"`) + execSync(`git add --all && git commit -m "released v${version}"`); process.exit(0); } else { log.warning(` From feb03bfa8904ad951e11b88a608df0ad79361f85 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:42:57 +0100 Subject: [PATCH 174/243] test6 --- package.json | 3 ++- scripts/precommit.js | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 scripts/precommit.js diff --git a/package.json b/package.json index 8fba1cde..8e61eba1 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ }, "scripts": { "postinstall": "node ./scripts/postinstall", - "prepublishOnly": "node ./scripts/prepublishOnly" + "prepublishOnly": "node ./scripts/prepublishOnly", + "precommit": "node ./scripts/precommit" }, "dependencies": { "@capacitor/android": "^1.0.0-beta.13", diff --git a/scripts/precommit.js b/scripts/precommit.js new file mode 100644 index 00000000..d2d5f9d9 --- /dev/null +++ b/scripts/precommit.js @@ -0,0 +1,2 @@ +console.log('hello') +process.exit(1) From ecb8d4db2f157bcd858d9f43f3cb98e275a9f8bd Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:43:55 +0100 Subject: [PATCH 175/243] Revert "test6" This reverts commit feb03bfa8904ad951e11b88a608df0ad79361f85. --- package.json | 3 +-- scripts/precommit.js | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 scripts/precommit.js diff --git a/package.json b/package.json index 8e61eba1..8fba1cde 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,7 @@ }, "scripts": { "postinstall": "node ./scripts/postinstall", - "prepublishOnly": "node ./scripts/prepublishOnly", - "precommit": "node ./scripts/precommit" + "prepublishOnly": "node ./scripts/prepublishOnly" }, "dependencies": { "@capacitor/android": "^1.0.0-beta.13", diff --git a/scripts/precommit.js b/scripts/precommit.js deleted file mode 100644 index d2d5f9d9..00000000 --- a/scripts/precommit.js +++ /dev/null @@ -1,2 +0,0 @@ -console.log('hello') -process.exit(1) From 36ce90ab17d3f1f5e8c760a5c7ac156b7e166a00 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:46:44 +0100 Subject: [PATCH 176/243] released v3.0.0-alpha.48 --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e40639f0..909fe539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.47 +### App Framework v3.0.0-alpha.48 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index 37210b95..bf46cc19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.48", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16620,4 +16620,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 8fba1cde..ce131fad 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.47", + "version": "3.0.0-alpha.48", "license": "MIT", "bin": { "app": "./cli/app.js" From 7dc05260c1518cca800d8bbf5e2dc8880c9c827b Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:49:54 +0100 Subject: [PATCH 177/243] typo --- scripts/prepublishOnly.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepublishOnly.js b/scripts/prepublishOnly.js index cb46a302..eb2e911f 100644 --- a/scripts/prepublishOnly.js +++ b/scripts/prepublishOnly.js @@ -38,7 +38,7 @@ const checkChangelog = () => { }); } else if (searchRes.length === 1) { log.success(`Changelog entry found for version ${version}.`); - execSync(`git add --all && git commit -m "released v${version}"`); + execSync(`git add --all && git commit -m "release v${version}"`); process.exit(0); } else { log.warning(` From 347da579c7988643fc9ad9d7f7f76f1b617b04ec Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:51:43 +0100 Subject: [PATCH 178/243] release v3.0.0-alpha.49 --- CHANGELOG.md | 2 +- package-lock.json | 2 +- package.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 909fe539..5746f69b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.48 +### App Framework v3.0.0-alpha.49 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index bf46cc19..6868b628 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.49", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ce131fad..66137da8 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.48", + "version": "3.0.0-alpha.49", "license": "MIT", "bin": { "app": "./cli/app.js" @@ -49,4 +49,4 @@ "vue-hot-reload-api": "^2.3.1", "vue-template-compiler": "^2.5.21" } -} +} \ No newline at end of file From 0ba3f88b0b1b81875165d0c600f5545822ccc504 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 20:59:39 +0100 Subject: [PATCH 179/243] release workflow in readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index b34c0751..a5e015e8 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,10 @@ Run `npm update` to update to latest development version. 5. Create a pull request with note `closes issue ` Please follow the [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript). + +### Release Workflow + +1. Commit all changes +2. Update the changelog file for the next version +3. Run `npm publish` to start the publishing process + - From 4a7f28964491510945fd4e03d863974ef03d8316 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 21:12:42 +0100 Subject: [PATCH 180/243] make dev server port configurable closes #710 --- demo-app/config.json | 3 +++ scripts/dev.js | 1 + scripts/helper/app-config-schema.json | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/demo-app/config.json b/demo-app/config.json index efb97f02..966070ff 100644 --- a/demo-app/config.json +++ b/demo-app/config.json @@ -10,6 +10,9 @@ "useFramework7Icons": true, "useMaterialDesignIcons": true }, + "devServer": { + "port": 1234 + }, "pwa": { "buildOnBuildCommand": true, "openInBrowserAfterBuild": true, diff --git a/scripts/dev.js b/scripts/dev.js index 6a474c7d..6c404adb 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -45,4 +45,5 @@ run.silent(` --cache-dir "${parcelCacheFolder}" --out-dir "${cacheFolder}" --open + --port ${config.devServer.port} `.replace(/\n/g, ' ')); diff --git a/scripts/helper/app-config-schema.json b/scripts/helper/app-config-schema.json index b7963873..4bbee3c6 100644 --- a/scripts/helper/app-config-schema.json +++ b/scripts/helper/app-config-schema.json @@ -41,6 +41,16 @@ }, "additionalProperties": false }, + "devServer": { + "type": "object", + "properties": { + "port": { + "type": "number", + "default": 1234 + } + }, + "additionalProperties": false + }, "pwa": { "type": "object", "properties": { From 9acfc8e24a434b16414729d0bfad4544a9fd3523 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 21:13:12 +0100 Subject: [PATCH 181/243] release v3.0.0-alpha.50 --- CHANGELOG.md | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5746f69b..f4832492 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.49 +### App Framework v3.0.0-alpha.50 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index 6868b628..ebf431e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.49", + "version": "3.0.0-alpha.50", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 66137da8..0c101576 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.49", + "version": "3.0.0-alpha.50", "license": "MIT", "bin": { "app": "./cli/app.js" From 87f88d8f123b3b8a3561f0d9a2052bee178f02e4 Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 21:14:35 +0100 Subject: [PATCH 182/243] release v3.0.0-alpha.51 --- CHANGELOG.md | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4832492..1b1abbb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## App Framework v3 -### App Framework v3.0.0-alpha.50 +### App Framework v3.0.0-alpha.51 Current development version. Please check the [milestone](https://github.com/scriptPilot/app-framework/milestone/8) for details. diff --git a/package-lock.json b/package-lock.json index ebf431e5..1d845a51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "app-framework", - "version": "3.0.0-alpha.50", + "version": "3.0.0-alpha.51", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0c101576..d7394d22 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "iOS and Android Apps with HTML & JavaScript - develop, build and deploy - free and open source!", "author": "scriptPilot (https://github.com/scriptPilot)", "repository": "https://github.com/scriptPilot/app-framework.git", - "version": "3.0.0-alpha.50", + "version": "3.0.0-alpha.51", "license": "MIT", "bin": { "app": "./cli/app.js" From ed8b0052585b21012c44906695abf4330f3be45c Mon Sep 17 00:00:00 2001 From: ScriptPilot Date: Thu, 10 Jan 2019 23:01:41 +0100 Subject: [PATCH 183/243] make demo app v3 ready for deployment --- demo-app/app.vue | 6 +-- demo-app/config.json | 2 +- demo-app/icon.android.png | Bin 50633 -> 50250 bytes demo-app/icon.ios.png | Bin 50546 -> 49721 bytes demo-app/pages/home.vue | 25 ++++++----- design/icon.android.drawio.xml | 2 +- .../icon.png => design/icon.default.png | Bin design/icon.ios.drawio.xml | 2 +- scripts/create-app-folder.js | 2 +- scripts/update-framework7-demo-files.js | 40 +++++++++++++++++- 10 files changed, 58 insertions(+), 21 deletions(-) rename scripts/helper/icon.png => design/icon.default.png (100%) diff --git a/demo-app/app.vue b/demo-app/app.vue index 267a2361..7fc1e2a9 100644 --- a/demo-app/app.vue +++ b/demo-app/app.vue @@ -1,10 +1,10 @@ diff --git a/design/icon.android.drawio.xml b/design/icon.android.drawio.xml index cd680b00..02d73d24 100644 --- a/design/icon.android.drawio.xml +++ b/design/icon.android.drawio.xml @@ -1 +1 @@ -xZbLbqMwFEC/hmUkgwmB5TTtpBq1M4toFE03IwcMeGq41DgF+vVjgnk4D7WLpBULfM+1jX18BVh4mdUrQYr0ESLKLQdFtYVvLcdxke+pW0uajjiOp0kiWNQxNII1e6MdtDXcsYiWBpIAXLLChCHkOQ2lwYgQUJndYuCRAQqS0COwDgk/phsWyVRTB6ExcU9ZksrDzJaEz4mAXa4fmENOu0xG+nl01zIlEVQThO8svBQAsmtl9ZLy1qtp7PuZ7LBmQXP5kQH/+FY++eXLA/uWNPRP8LL68XeGu1leCd9pF3qxsunl7HdH20mQhW+qlEm6LkjYZitVDoqlMuMqslUzZpwvgYPYj8XxQl2+4qUU8Ez7zN4Svjnegd7UKxWS1hOkd7SikFEpGtWlNgY0RlRNztAO/A6m0/MbKNGVkwwzjwZVQ0s8LfTxVzXHs99y9fP+bZPX24fNk5jZ7wt9RyEpi67GY1a32g+duiGJ5+ic0/G07MHwkc4T0s8bniPTcR9PLOOeTSUP8OKO3cs7NrWdNHtY2nHgI3Qdx14QfLVj7+p1HLsuxt7H6liAJJJBrkJ3fhnnXuAe1LX71c4XV3fu2IEX4097dyxQ8Hl1rcLxY7rPTf5W8N1/ \ No newline at end of file +zZZNb6MwEEB/DcdIBhMCx5ZtUq36cYhWUXupHBjAW4OpcQr0168JTsBJq/aQbKsc4nljO/abEcTCYd4sBCmzWx4DsxwUNxb+ZTmO7WKkvjrS9mQW4B6kgsY9QgNY0jfQKzXc0BgqA0nOmaSlCSNeFBBJgxEheG1OSziLDVCSFI7AMiLsmK5oLDNNHYSGxDXQNJOHmTWJnlPBN4X+wYIX0GdysttHT60yEvN6hPCVhUPBuexHeRMC67SaxuYfZPdnFlDIryz4y9by0a9ebuhF2sJD8LL4/TTRZXolbKNd6MPKdidnezvoNkEWvqwzKmFZkqjL1qobFMtkzlRkq2FCGQs542K7Ficz9fEVr6Tgz7DLbC3hy+Mb6Eu9gpDQjJC+0QJ4DlK0akpjLGiNqB7V0A78Hmbj+u0p0Z2T7nceDKqBlvi+0Nv7eoonf+Ti7vptVTTrm9WjmNifC/1EIanKvscT2nTaD53O54GP0EdOh2rZJzLsI9PxLh5ZxlN0LHkPT+7YPb1jU9u7Zg/K4IYX8yk6j2PPC77bsXf2Pk5cF2Pva30suCSS8kKF7vQ0zr1Z8NP6enZ2544deAn+b8+OQ8dn7WsVDi/TbW70ZwVf/QM= \ No newline at end of file diff --git a/scripts/helper/icon.png b/design/icon.default.png similarity index 100% rename from scripts/helper/icon.png rename to design/icon.default.png diff --git a/design/icon.ios.drawio.xml b/design/icon.ios.drawio.xml index b600e7af..5ad8fde6 100644 --- a/design/icon.ios.drawio.xml +++ b/design/icon.ios.drawio.xml @@ -1 +1 @@ -xZZbT4MwFIB/DY9LCmVsPOqcM8bLw2IWfTEdtFAtFEsn4K+3jHLpLtGHTcMDPd9pS/v1BLDgLCkXAmXxPQ8xsxwQlha8shzHBVNP3WpSNcRxPE0iQcOGgR4s6RduoK3hhoY4N5DknEmamTDgaYoDaTAkBC/MboSz0AAZivAeWAaI7dMVDWWsqQNAn7jBNIrlbmaNgvdI8E2qH5jyFDeZBLXz6K55jEJeDBCcW3AmOJdNKylnmNVeTWPXR7LdmgVO5W8GvLG1fJnmH3f0Iqrws/+xuH0dwWaWT8Q22oVerKxaOdvd4XoSYMHLIqYSLzMU1NlClYNisUyYimzVJJSxGWdcbMdCMlHXVPFcCv6O28zWErzc34He1CcWEpcDpHe0wDzBUlSqS2kMqIyoGJyh7U8bGA/Pr6NIV07UzdwbVA0t8bDQ+8diDEdPcvFw87VKy/Xd6kWM7J+F/qAQ5VlT44SWtfZdp24Q+p57zGl/WnZneE/nAenHDY+B6biNB5Zhy4aSO3hyx+7pHZvaDprdLW3ijwE4j2PP9//bsXf2OiYEriH4XR0LLpGkPFWhOz6Nc893d+ra/W/nk7M7B2CCCPmzd8cE+H9X1yrsP6bb3OBvBc6/AQ== \ No newline at end of file +zZZBU6MwFIB/DcfOBEIpHBVtHUfdQ2ens152UnhANBAMqYC/3lDSQlodPbS7DgfyvpeE5MsbwMJh3iwEKbN7HgOzHBQ3Fr6yHMd2MVK3jrQ98V2nB6mgcY/QAJb0DfRIDTc0hspAknMmaWnCiBcFRNJgRAhem90SzmIDlCSFI7CMCDumKxrLTFMHoSFxAzTN5GFmTaLnVPBNoR9Y8AL6TE528+iuVUZiXo8QvrZwKDiXfStvQmCdVtPY/JPsfs0CCvmdAU9sLR/96uWOXqQt/AleFrd/J7if5ZWwjXahFyvbnZzt7qCbBFn4ss6ohGVJoi5bq2pQLJM5U5GtmgllLOSMi+1YnMzU5SteScGfYZfZWsKXxzvQm3oFIaEZIb2jBfAcpGhVl8YY0BpRPTpDO/B7mI3Pb0+Jrpx0P/NgUDW0xI+F3v+qp3jyWy4ebt5WRbO+Wz2Kif210C8UkqrsazyhTaf90Ol8HkwR+szpcFr2iQz7yHS8i0eW8RQdS97Dkzt2T+/Y1Pah2YNjcMOrwHPP49jzgv/t2Dt7HScJXuNv1rHgkkjKCxW609M492bBT6vr2dmdIzQjSfLP3h2Hjs9a1yocPqbb3OhnBV+/Aw== \ No newline at end of file diff --git a/scripts/create-app-folder.js b/scripts/create-app-folder.js index 6bdf586f..41804023 100644 --- a/scripts/create-app-folder.js +++ b/scripts/create-app-folder.js @@ -80,7 +80,7 @@ try { // Copy icon file try { - fs.copySync(path.scripts('helper/icon.png'), path.app('icon.png')); + fs.copySync(path.framework('design/icon.default.png'), path.app('icon.png')); log.success('Created icon.png file.'); } catch (e) { log.error('Failed to create icon.png file.'); diff --git a/scripts/update-framework7-demo-files.js b/scripts/update-framework7-demo-files.js index 08e6b381..7e670e66 100644 --- a/scripts/update-framework7-demo-files.js +++ b/scripts/update-framework7-demo-files.js @@ -42,6 +42,42 @@ fs.readdirSync(path.app('pages')).forEach((file) => { // Hide theme switch if it is the current one content = content.replace('link="./index.html?theme=ios">', 'link="./index.html?theme=ios" v-if="$f7.theme===\'md\'">'); content = content.replace('link="./index.html?theme=md">', 'link="./index.html?theme=md" v-if="$f7.theme===\'ios\'">'); + // Modify home page + if (file === 'home.vue') { + // Add App Framework info + const infoText = ` + + + + + + +

This application is made with App Framework and powered by the beautiful Framework7, the powerful Vue, the native bridge Capacitor and bundled with Parcel. Use App Framework to realize your own amazing app - free and open source.

+
+ `; + if (content.match(/<\/f7-navbar>/) === null) log.error('Did not find navbar text passage.'); + content = content.replace(/<\/f7-navbar>/, `${infoText}`); + // Remove about link + const aboutRegExp = /[\n ]+[\n ]+<\/f7-icon>[\n ]+<\/f7-list-item>[\n ]+<\/f7-list>/; + if (content.match(aboutRegExp) === null) log.error('Did not find about text passage.'); + content = content.replace(aboutRegExp, ''); + // Rename components title block + const componentsRegExp = /Components<\/f7-block-title>/; + if (content.match(componentsRegExp) === null) log.error('Did not find about components passage.'); + content = content.replace(componentsRegExp, 'Framework7 UI Components'); + // Rename themes title block + const themesRegExp = /Themes<\/f7-block-title>/; + if (content.match(themesRegExp) === null) log.error('Did not find themes text passage.'); + content = content.replace(themesRegExp, 'Framework7 Themes'); + // Remove + const titleRegExp = /Framework7 Vue<\/f7-nav-title>/; + if (content.match(titleRegExp) === null) log.error('Did not find title text passage.'); + content = content.replace(titleRegExp, 'App Framework'); + // Remove router examples + const routerRegExp = /Page Loaders & Router<\/f7-block-title>[\n ]+[\n ]+<\/f7-list-item>[\n ]+<\/f7-list-item>[\n ]+<\/f7-list>/; + if (content.match(routerRegExp) === null) log.error('Did not find router text passage.'); + content = content.replace(routerRegExp, ''); + } // Update file fs.writeFileSync(path.app('pages', file), content); }); @@ -73,7 +109,9 @@ fs.writeFileSync(path.app('app.vue'), app); // Copy app.vue template const currentAppComponent = fs.readFileSync(path.app('app.vue'), { encoding: 'utf-8' }); const f7AppComponent = fs.readFileSync(path.resolve(sourceFolder, 'src/app.vue'), { encoding: 'utf-8' }); -const newAppComponent = currentAppComponent.replace(/