diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d2578d8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.js] +indent_size = 4 + +[*.{css,handlebars,json}] +indent_size = 2 diff --git a/.eslintignore b/.eslintignore index 139229b..e7559cc 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,2 @@ # web javascript causes a lot of eslint warnings -assets/js \ No newline at end of file +assets/js diff --git a/.eslintrc.json b/.eslintrc.json index 9cf5da9..8d56f4f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,18 +1,18 @@ { - "env": { - "browser": true, - "node": true, - "commonjs": true, - "es6": true - }, - "globals": { - "document": true - }, + "env": { + "browser": true, + "node": true, + "commonjs": true, + "es6": true + }, + "globals": { + "document": true + }, "parserOptions": { - "ecmaVersion": 2021 - }, - "extends": "eslint:recommended", - "rules": { + "ecmaVersion": 2021 + }, + "extends": "eslint:recommended", + "rules": { "no-case-declarations": "off", "no-empty": "off", "no-console": "off", @@ -23,20 +23,20 @@ "error", "never" ], - "indent": [ - "error", + "indent": [ + "error", "tab", { "SwitchCase": 1 } - ], - "quotes": [ - "error", - "single" - ], - "semi": [ - "error", - "always" - ] - } -} \ No newline at end of file + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ] + } +} diff --git a/.gitignore b/.gitignore index af697eb..b2cea5e 100644 --- a/.gitignore +++ b/.gitignore @@ -66,4 +66,4 @@ static-text.json .DS_Store # keep browserified files out -*.bundled.js \ No newline at end of file +*.bundled.js diff --git a/.travis.yml b/.travis.yml index ea48110..aba8930 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,10 @@ language: node_js node_js: - - "7" - - "8" - - "9" + - "7" + - "8" + - "9" sudo: false script: - - "npm run lint" \ No newline at end of file + - "npm run lint" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/boards/boards.json b/boards/boards.json deleted file mode 100644 index 56fe690..0000000 --- a/boards/boards.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "boards": { - "gb7qURRJ": { - "github_links": [ - { - "display": "Account server repo", - "url": "https://github.com/PretendoNetwork/account" - } - ] - }, - "G54H0wtc": { - "github_links": [ - { - "display": "Juxtaposition repo", - "url": "https://github.com/PretendoNetwork/juxt-web" - } - ] - }, - "lmAbWUyn": { - "github_links": [ - { - "display": "BOSS repo", - "url": "https://github.com/PretendoNetwork/BOSS" - } - ] - }, - "LQZftqhE": { - "github_links": [ - { - "display": "Super Mario Maker (authentication) repo", - "url": "https://github.com/PretendoNetwork/super-mario-maker-authentication" - } - ] - }, - "9frc4r0Q": { - "github_links": [ - { - "display": "Website repo", - "url": "https://github.com/PretendoNetwork/website" - } - ] - } - } -} diff --git a/docs/common/errorList.json b/docs/common/errorList.json new file mode 100644 index 0000000..3aaf3c9 --- /dev/null +++ b/docs/common/errorList.json @@ -0,0 +1,26 @@ +{ + "juxt": [ + "JXT-598-0009", + "JXT-598-0010", + "JXT-598-0011", + "JXT-598-0020", + "SYS-015-2004", + "SYS-015-5001", + "SYS-015-5002", + "SYS-015-5003", + "SYS-015-5004", + "SYS-015-5005", + "SYS-015-5006", + "SYS-015-5007", + "SYS-015-5015", + "SYS-115-2004", + "SYS-115-5001", + "SYS-115-5002", + "SYS-115-5003", + "SYS-115-5004", + "SYS-115-5005", + "SYS-115-5006", + "SYS-115-5007", + "SYS-115-5015" + ] +} diff --git a/docs/en-US/installing-juxt.md b/docs/en-US/installing-juxt.md deleted file mode 100644 index 7f2e4db..0000000 --- a/docs/en-US/installing-juxt.md +++ /dev/null @@ -1,12 +0,0 @@ -# Installing Juxt - -The first step to installing Juxt is playing a round of Among Us as an impostor. I promise it will all make sense ina second. - -``` -.    。    •   ゚  。   . -.      .     。   。 . -.   。      ඞ 。 .    •     • -゚   Red was not An Impostor.  。 . -'    1 Impostor remains     。 -゚   .   . ,    .  . -``` \ No newline at end of file diff --git a/docs/en-US/welcome.md b/docs/en-US/welcome.md deleted file mode 100644 index 7feaafd..0000000 --- a/docs/en-US/welcome.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# Other documentation - -We are a bunch of programmers spending our free time reverse engineering and coding game servers for 3ds and wiiu. - -We are a bunch of programmers spending our free time reverse engineering and coding game servers for 3ds and wiiu. - -We are a bunch of programmers spending our free time reverse engineering and coding game servers for 3ds and wiiu. - -```javascript -function returnTrue() { - class trueOrFalseObject { - constructor(trueOrFalse) { - this.trueOrFalse = trueOrFalse; - } - get trueOrFalse() { - return this.trueOrFalse(); - } - convertNumberToBoolean(trueOrFalse) { - if (convertStringToNumber(trueOrFalse) === 0) { - return true; - } else if (convertStringToNumber(trueOrFalse) == 1) { - return false; - } - } - convertStringToNumber(trueOrFalse) { - if (trueOrFalse === "true") { - return 0; - } else if (trueOrFalse === "false") { - return true * 69 - 1 - false * 69 * 420 - 69 + 2; - } - } - trueOrFalse() { - return this.convertNumberToBoolean(trueOrFalse); - } - } - - let objectWhichWeKnowIsTrue = new trueOrFalseObject("true"); - - function checkIfTrueOrFalse(objectToCheckIfTrueOrFalse) { - if (objectToCheckIfTrueOrFalse === objectWhichWeKnowIsTrue.trueOrFalse) { - return objectWhichWeKnowIsTrue.trueOrFalse; - console.log( - "Successfully checked if the object is true or false. Result: the object is true." - ); - // TODO: fix text not console logging - } else { - objectWhichWeKnowIsTrue = new trueOrFalseObject("false"); - if (objectToCheckIfTrueOrFalse === objectWhichWeKnowIsTrue.trueOrFalse) { - return objectWhichWeKnowIsTrue.trueOrFalse; - console.log( - "Successfully checked if the object is true or false. Result: the object is false." - ); - // TODO: fix text not console logging - } else { - // something went horribly wrong - } - objectWhichWeKnowIsTrue = new trueOrFalseObject("true"); - } - } - - const isTrueTrueOrFalse = checkIfTrueOrFalse("true"); - const isfalseTrueOrFalse = checkIfTrueOrFalse("false"); - - const trueOrFalseJSON = { - true: isTrueTrueOrFalse, - false: isfalseTrueOrFalse, - }; - - return trueOrFalseJSON.true -} - -console.log(returnTrue()) -``` diff --git a/docs/en_US/errors/JXT-598-0009.md b/docs/en_US/errors/JXT-598-0009.md new file mode 100644 index 0000000..3821e7a --- /dev/null +++ b/docs/en_US/errors/JXT-598-0009.md @@ -0,0 +1,16 @@ +# Error Code: 598-0009 +**Applies to:** Wii U, 3DS Family of Systems + +--- + +Your Pretendo Network ID has been limited from posting on Juxt. + +This typically occurs because of a violation of the Juxt Code of Conduct, or other offense on the Network or the Discord server. + +For more information, launch the Miiverse app, or request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/JXT-598-0010.md b/docs/en_US/errors/JXT-598-0010.md new file mode 100644 index 0000000..7d3455e --- /dev/null +++ b/docs/en_US/errors/JXT-598-0010.md @@ -0,0 +1,16 @@ +# Error Code: 598-0010 +**Applies to:** Wii U, 3DS Family of Systems + +--- + +Your Pretendo Network ID has been temporarily banned from Juxt. + +This typically occurs because of a violation of the Juxt Code of Conduct, or other offense on the Network or the Discord server. + +For more information, launch the Miiverse app, or request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/JXT-598-0011.md b/docs/en_US/errors/JXT-598-0011.md new file mode 100644 index 0000000..30382a9 --- /dev/null +++ b/docs/en_US/errors/JXT-598-0011.md @@ -0,0 +1,16 @@ +# Error Code: 598-0011 +**Applies to:** Wii U, 3DS Family of Systems + +--- + +Your Pretendo Network ID has been permanently banned from Juxt. + +This typically occurs because of a violation of the Juxt Code of Conduct, or other offense on the Network or the Discord server. + +For more information, launch the Miiverse app, or request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/JXT-598-0020.md b/docs/en_US/errors/JXT-598-0020.md new file mode 100644 index 0000000..cffffd4 --- /dev/null +++ b/docs/en_US/errors/JXT-598-0020.md @@ -0,0 +1,16 @@ +# Error Code: 598-0020 +**Applies to:** Wii U, 3DS Family of Systems + +--- + +- "Unable to parse service Token. Are you using a Nintendo Network ID?" + +This typically occurs because you are attempting to connect to Juxt with a **Nintendo Network ID** instead of a **Pretendo Network ID**. + +Please ensure that the account you are using is indeed the one created for the Pretendo Network, and that you have either selected Pretendo in the 3DS Patch `nimbus.3dsx`, or have launched your Wii U with the `30_nimble.rpx` module. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-015-2004.md b/docs/en_US/errors/SYS-015-2004.md new file mode 100644 index 0000000..4d83691 --- /dev/null +++ b/docs/en_US/errors/SYS-015-2004.md @@ -0,0 +1,22 @@ +# Error Code: 015-2004 +**Applies to:** 3DS Family of Systems + +--- + +- "Unable to connect to the server. Please try again later. If the problem persists, please make a note of the error code and visit support.nintendo.com." + +This error indicates a connection problem with the server. + +### Possible Solutions + +- **Check our network status information** +> Check our [Network Status page](https://stats.uptimerobot.com/R7E4wiGjJq) and ensure that there are no ongoing service outages. + +- **Ensure your Wii U can connect to the internet and try again** +> Try performing a connection test in system settings. If the connection test fails, there is likely another issues on your network + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-015-5001.md b/docs/en_US/errors/SYS-015-5001.md new file mode 100644 index 0000000..88b5d89 --- /dev/null +++ b/docs/en_US/errors/SYS-015-5001.md @@ -0,0 +1,24 @@ +# Error Code: 015-5001 +**Applies to:** 3DS Family of Systems + +--- + +- "A system update is required. Go to System Settings to perform a system update." + +This error should not occur under normal conditions when connected to the Pretendo Network. Follow the steps below to troubleshoot. + +### Possible Solutions + +- **Check that you are patched** + 1. Open System Settings on the 3DS HOME Menu + 2. Click on `Nintendo Network ID Settings` + 3. Navigate to the 3RD Page, and select `Other` + 4. Click on `Network Services Agreement` + - If the top of the lower screen says `Pretendo Network Services Agreement`, then you are connected to the Pretendo Network. + - If the top of the lower screen says something else, then you are not connected to the Pretendo Network. Follow [these](/docs/install/3ds) instructions to get started. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-015-5002.md b/docs/en_US/errors/SYS-015-5002.md new file mode 100644 index 0000000..99d5174 --- /dev/null +++ b/docs/en_US/errors/SYS-015-5002.md @@ -0,0 +1,15 @@ +# Error Code: 115-5002 +**Applies to:** 3DS Family of Systems + +--- + +- "You must have started Miiverse at least once before you can use this online service. Please Start Miiverse from the 3DS HOME Menu and set up your user information." + + +This error occurs when you have never opened the Miiverse app before attempting to use online features. Open the Miiverse app from the HOME Menu to get started. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-015-5003.md b/docs/en_US/errors/SYS-015-5003.md new file mode 100644 index 0000000..06d702a --- /dev/null +++ b/docs/en_US/errors/SYS-015-5003.md @@ -0,0 +1,15 @@ +# Error Code: 015-5003 +**Applies to:** 3DS Family of Systems + +--- + +- "The server is currently undergoing maintenance. Please Try again later." + +Juxtaposition is currently undergoing maintenance. Check our [Network Status page](https://stats.uptimerobot.com/R7E4wiGjJq) or join our [Discord server](https://invite.gg/pretendo) for updates. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-015-5004.md b/docs/en_US/errors/SYS-015-5004.md new file mode 100644 index 0000000..43ffe46 --- /dev/null +++ b/docs/en_US/errors/SYS-015-5004.md @@ -0,0 +1,24 @@ +# Error Code: 015-5004 +**Applies to:** 3DS Family of Systems + +--- + +- "The Miiverse service has ended. Miiverse and any software features that make use of Miiverse will no longer be available. Thank you for your Interest." + +This error should not occur under normal conditions when connected to the Pretendo Network. Follow the steps below to troubleshoot. + +### Possible Solutions + +- **Check that you are patched** + 1. Open System Settings on the 3DS HOME Menu + 2. Click on `Nintendo Network ID Settings` + 3. Navigate to the 3RD Page, and select `Other` + 4. Click on `Network Services Agreement` + - If the top of the lower screen says `Pretendo Network Services Agreement`, then you are connected to the Pretendo Network. + - If the top of the lower screen says something else, then you are not connected to the Pretendo Network. Follow [these](/docs/install/3ds) instructions to get started. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-015-5005.md b/docs/en_US/errors/SYS-015-5005.md new file mode 100644 index 0000000..a7ff481 --- /dev/null +++ b/docs/en_US/errors/SYS-015-5005.md @@ -0,0 +1,37 @@ +# Error Code: 015-5005 +**Applies to:** 3DS Family of Systems + +--- + +- "You cannot use Miiverse because it has been restricted in Parental Controls." + +This error occurs when Miiverse has been disallowed by Parental Controls. Follow the steps below to re-enable Miiverse. + +### Steps to Remove Miiverse Parental Control Limits + 1. On the 3DS HOME Menu, open the `System Settings` app. + +

+ 2. Click on `Parental Controls` on the bottom screen. + +

+ 3. Click on `Change` and enter your pin. + +

+ 4. Click on `Set Restrictions`. + +

+ 5. Scroll down to the `Miiverse` button. + +

+ 6. Click the `Miiverse` button, and then select `Do Not Restrict`. + +

+ + Parental Controls should now be disabled for Miiverse. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-015-5006.md b/docs/en_US/errors/SYS-015-5006.md new file mode 100644 index 0000000..1e4264b --- /dev/null +++ b/docs/en_US/errors/SYS-015-5006.md @@ -0,0 +1,37 @@ +# Error Code: 015-5005 +**Applies to:** 3DS Family of Systems + +--- + +- "You may not post to Miiverse due to a restriction in Parental Controls" + +This error occurs when posting to Miiverse has been disallowed by Parental Controls. Follow the steps below to re-enable posting. + +### Steps to Remove Miiverse Parental Control Limits + 1. On the 3DS HOME Menu, open the `System Settings` app. + +

+ 2. Click on `Parental Controls` on the bottom screen. + +

+ 3. Click on `Change` and enter your pin. + +

+ 4. Click on `Set Restrictions`. + +

+ 5. Scroll down to the `Miiverse` button. + +

+ 6. Click the `Miiverse` button, and then select `Do Not Restrict`. + +

+ +Parental Controls should now be disabled for Miiverse. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-015-5007.md b/docs/en_US/errors/SYS-015-5007.md new file mode 100644 index 0000000..633dc14 --- /dev/null +++ b/docs/en_US/errors/SYS-015-5007.md @@ -0,0 +1,18 @@ +# Error Code: 015-5007 +**Applies to:** 3DS Family of Systems + +--- + +- ""Miiverse function are unavailable to this Nintendo Network ID. For details, please start Miiverse." + +This typically occurs because you are attempting to connect to Juxt with a **Nintendo Network ID** instead of a **Pretendo Network ID**. + +This can also occur if your Pretendo Network ID has been banned from using Juxt. + +For more information, launch the Miiverse app, or request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-015-5015.md b/docs/en_US/errors/SYS-015-5015.md new file mode 100644 index 0000000..ef011f4 --- /dev/null +++ b/docs/en_US/errors/SYS-015-5015.md @@ -0,0 +1,23 @@ +# Error Code: 015-5015 +**Applies to:** 3DS Family of Systems + +--- + +- "Unable to connect to the server. Please try again later. If the problem persists, please make a note of the error code and visit support.nintendo.com." + +This error indicates a connection problem with the server. + +### Possible Solutions + +- **Check our network status information** +> Check our [Network Status page](https://stats.uptimerobot.com/R7E4wiGjJq) and ensure that there are no ongoing service outages. + +- **Ensure your 3DS can connect to the internet and try again** +> Try performing a connection test in system settings. If the connection test fails, there is likely another issues on your network + + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-115-2004.md b/docs/en_US/errors/SYS-115-2004.md new file mode 100644 index 0000000..489d166 --- /dev/null +++ b/docs/en_US/errors/SYS-115-2004.md @@ -0,0 +1,22 @@ +# Error Code: 115-2004 +**Applies to:** Wii U + +--- + +- "Unable to connect to the server. Please try again later. If the problem persists, please make a note of the error code and visit support.nintendo.com." + +This error indicates a connection problem with the server. + +### Possible Solutions + +- **Check our network status information** +> Check our [Network Status page](https://stats.uptimerobot.com/R7E4wiGjJq) and ensure that there are no ongoing service outages. + +- **Ensure your Wii U can connect to the internet and try again** +> Try performing a connection test in system settings. If the connection test fails, there is likely another issues on your network + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-115-5001.md b/docs/en_US/errors/SYS-115-5001.md new file mode 100644 index 0000000..6660896 --- /dev/null +++ b/docs/en_US/errors/SYS-115-5001.md @@ -0,0 +1,27 @@ +# Error Code: 115-5001 +**Applies to:** Wii U + +--- + +- "A system update is required. Go to System Settings to perform a system update." + +This error should not occur under normal conditions when connected to the Pretendo Network. Follow the steps below to troubleshoot. + +### Possible Solutions + +- **Check that you are patched** + 1. On the Wii U System Menu, click on your Mii in the top left corner. + 2. Scroll down and select `View Network Services Agreement` button. + 3. Select the language of your choice. + - If the top of the screen says `Pretendo Network Services Agreement`, then you are connected to the Pretendo Network. + - If the top of the screen says something else, then you are not connected to the Pretendo Network. Follow [these](/docs/install/wiiu) instructions to get started. + +- **Update your console** + - As of now, version 5.5.6 is safe to update for homebrew. + - By default, modern homebrew environments block updates to ensure patches are not broken. You can follow [this](https://wiiu.hacks.guide/#/unblock-updates) guide to unblock updates. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-115-5002.md b/docs/en_US/errors/SYS-115-5002.md new file mode 100644 index 0000000..09f5e1c --- /dev/null +++ b/docs/en_US/errors/SYS-115-5002.md @@ -0,0 +1,14 @@ +# Error Code: 115-5002 +**Applies to:** Wii U + +--- + +- "You must have started Miiverse at least once before you can use this online service. Please Start Miiverse from the HOME Menu and set up your user information." + +This error occurs when you have never opened the Miiverse app before attempting to use online features. Open the Miiverse app from the HOME Menu to get started. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-115-5003.md b/docs/en_US/errors/SYS-115-5003.md new file mode 100644 index 0000000..ff58ac8 --- /dev/null +++ b/docs/en_US/errors/SYS-115-5003.md @@ -0,0 +1,15 @@ +# Error Code: 115-5003 +**Applies to:** Wii U + +--- + +- "The server is currently undergoing maintenance. Please Try again later." + +Juxtaposition is currently undergoing maintenance. Check our [Network Status page](https://stats.uptimerobot.com/R7E4wiGjJq) or join our [Discord server](https://invite.gg/pretendo) for updates. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-115-5004.md b/docs/en_US/errors/SYS-115-5004.md new file mode 100644 index 0000000..a1281fe --- /dev/null +++ b/docs/en_US/errors/SYS-115-5004.md @@ -0,0 +1,24 @@ +# Error Code: 115-5004 +**Applies to:** Wii U + +--- + +- "The Miiverse service has ended. Miiverse and any software features that make use of Miiverse will no longer be available. Thank you for your Interest." + +This error should not occur under normal conditions when connected to the Pretendo Network. Follow the steps below to troubleshoot. + +### Possible Solutions + +- **Check that you are patched** + 1. On the Wii U System Menu, click on your Mii in the top left corner. + 2. Scroll down and select `View Network Services Agreement` button. + 3. Select the language of your choice. + - If the top of the screen says `Pretendo Network Services Agreement`, then you are connected to the Pretendo Network. + - If the top of the screen says something else, then you are not connected to the Pretendo Network. Follow [these](/docs/install) instructions to get started. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-115-5005.md b/docs/en_US/errors/SYS-115-5005.md new file mode 100644 index 0000000..7436dbc --- /dev/null +++ b/docs/en_US/errors/SYS-115-5005.md @@ -0,0 +1,31 @@ +# Error Code: 115-5005 +**Applies to:** Wii U + +--- + + +- "You cannot use Miiverse because it has been restricted in Parental Controls." + + +This error occurs when Miiverse has been disallowed by Parental Controls. Follow the steps below to re-enable Miiverse. + +### Steps to Remove Miiverse Parental Control Limits + 1. On the Wii U System Menu, open the `Parental Controls` app +

+ 2. Click `Next` on the Wii U Gamepad, and enter your pin. +

+ 3. Click on `Parental Controls Settings` +

+ 4. Find the user account you wish to change, and then scroll down to the `Miiverse` button. +

+ 5. Click the `Miiverse` button, and then select `Do Not Restrict`. +

+ +Parental Controls should now be disabled for Miiverse. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-115-5006.md b/docs/en_US/errors/SYS-115-5006.md new file mode 100644 index 0000000..dac8c20 --- /dev/null +++ b/docs/en_US/errors/SYS-115-5006.md @@ -0,0 +1,31 @@ +# Error Code: 115-5006 +**Applies to:** Wii U + +--- + + +- "You may not post to Miiverse due to a restriction in Parental Controls" + + +This error occurs when posting to Miiverse has been disallowed by Parental Controls. Follow the steps below to re-enable posting. + +### Steps to Remove Miiverse Parental Control Limits + 1. On the Wii U System Menu, open the `Parental Controls` app +

+ 2. Click `Next` on the Wii U Gamepad, and enter your pin. +

+ 3. Click on `Parental Controls Settings` +

+ 4. Find the user account you wish to change, and then scroll down to the `Miiverse` button. +

+ 5. Click the `Miiverse` button, and then select `Do Not Restrict`. +

+ +Parental Controls should now be disabled for Miiverse. + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + diff --git a/docs/en_US/errors/SYS-115-5007.md b/docs/en_US/errors/SYS-115-5007.md new file mode 100644 index 0000000..7d990ed --- /dev/null +++ b/docs/en_US/errors/SYS-115-5007.md @@ -0,0 +1,18 @@ +# Error Code: 115-5007 +**Applies to:** Wii U + +--- + +- ""Miiverse function are unavailable to this Nintendo Network ID. For details, please start Miiverse." + +This typically occurs because you are attempting to connect to Juxt with a **Nintendo Network ID** instead of a **Pretendo Network ID**. + +This can also occur if your Pretendo Network ID has been banned from using Juxt. + +For more information, launch the Miiverse app, or request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/errors/SYS-115-5015.md b/docs/en_US/errors/SYS-115-5015.md new file mode 100644 index 0000000..98b83e2 --- /dev/null +++ b/docs/en_US/errors/SYS-115-5015.md @@ -0,0 +1,23 @@ +# Error Code: 115-5015 +**Applies to:** Wii U + +--- + +- "Unable to connect to the server. Please try again later. If the problem persists, please make a note of the error code and visit support.nintendo.com." + +This error indicates a connection problem with the server. + +### Possible Solutions + +- **Check our network status information** + - Check our [Network Status page](https://stats.uptimerobot.com/R7E4wiGjJq) and ensure that there are no ongoing service outages. + +- **Ensure your Wii U can connect to the internet and try again** +- Try performing a connection test in system settings. If the connection test fails, there is likely another issues on your network + + +--- + +If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. + +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). diff --git a/docs/en_US/install/3ds.md b/docs/en_US/install/3ds.md new file mode 100644 index 0000000..e665d9f --- /dev/null +++ b/docs/en_US/install/3ds.md @@ -0,0 +1,35 @@ +# 3DS/2DS Family + +
+ ℹ️ This guide assumes that you have a Homebrewed System, if you don't please follow this guide on how to homebrew your system first. +
+ +To connect to Pretendo Network using a 3DS/2DS system you must use the Nimbus homebrew and Luma patches + +Navigate to the [releases](https://github.com/PretendoNetwork/Nimbus) page on the Nimbus GitHub repository + + + +Now download the `nimbus.zip` file from the latest release + + + +Extract `nimbus.zip` and copy the `3ds` and `luma` folders to the root of your SD card. You should now have the `0004013000002F02`, `0004013000003202`, and `0004013000003802` Luma patches along with the `nimbus.3dsx` homebrew + + + + +Place your SD card back into your console. Boot your console and ensure Luma patches are enabled. Run the Nimbus homebrew and select the network you wish to use (Nintendo Network, or Pretendo Network) + +## Luma patches +We make use of 3 Luma patches to connect your console to Pretendo: + +1) `0004013000002F02` - SSL system module. This patch disables SSL verification, allowing your console to establish an SSL connection with our servers +2) `0004013000003202` - Friends system module. This patch replaces the `https://nasc.nintendowifi.net` URL with our servers URL +3) `0004013000003802` - act system module. This patch replaces the `https://account.nintendo.net/v1/api/` URL with our servers URL + +## How does it work? +Nimbus will create a 2nd local account set to the `test` NASC environment. The IPS patches will set the `test` NASC environment URLs to point to Pretendo. You may freely switch between Pretendo and Nintendo. Your selected mode will persist between reboots. + +## 2nd local account? +You may have thought to yourself; _"2nd local account? What's that? I thought the 3DS only had one account?"_ And you'd be half right. The 3DS only _normally_ supports one account, and you may only have one account active at a time. However Nintendo implemented support for multiple local accounts on the 3DS/2DS which remains unused on all retail units. On a normal retail unit only one local account is ever made, which is set to the `prod` NASC environment. Local accounts may be set to `prod`, `test` or `dev`. Nimbus makes use of this unused feature to create sandboxed local accounts with different environments \ No newline at end of file diff --git a/docs/en_US/install/cemu.md b/docs/en_US/install/cemu.md new file mode 100644 index 0000000..252bdb0 --- /dev/null +++ b/docs/en_US/install/cemu.md @@ -0,0 +1,38 @@ +
This Guide may be missing some info or incomplete.
+ +# Cemu + +
+ Cemu support is experimental! + Cemu does not currently have a (working) way of redriecting to custom servers. Because of this, we must hook into the Cemu process and patch parts of the program memory, much like how our Wii U patch works. This is not officially supported by Cemu or it's developers, and may have issues or fail to work entirely. +
+ +## Online files +Cemu requires the use of several files obtained via dumping from real hardware. You may use those files if you have a physical Wii U, they will work just fine. If you _don't_ have a real Wii U navigate to [your account page](/account) and select `Download account files` + +
+ +## Setup Cemu for online +After obtaining the files needed for online play refer to the official [Cemu Online Play](https://cemu.cfw.guide/online-play.html) guide + +
+ Note! If you downloaded the account files from your Pretendo Network account you may skip the steps on the Cemu guide which dumps them from a console. However these files will not work on Nintendo Network. For compatibility with both servers, use files dumped from a real console +
+ +## Installing Pretendo +Once you have Cemu setup for online play navigate to our [Cemu Patcher](https://github.com/PretendoNetwork/cemu-patcher) repository. To build from scratch, clone the repository and open in Visual Studio and build the solution. To download the latest pre-built release, head to the [releases](https://github.com/PretendoNetwork/cemu-patcher/releases) page and download the latest `cemuhook.dll` + +Place `cemuhook.dll` in the same folder as `Cemu.exe` and run Cemu. Cemu should automatically detect `cemuhook.dll` and load it. You may now go online with Pretendo! + +## The patch doesn't seem to work? +Due to the experimental state of Cemu support, our patch may fail to load at times. This could be caused by changes in Cemu, your systems anti-virus, bugs in our programming, and more. We are looking into more stable patches. If the hook fails to load, try renaming `cemuhook.dll` to `dbghelp.dll` and restarting Cemu. If this does not work, you may need to contact a developer. Please be patient as we try to figure out the cause of the issue and any potential solutions + +
+ Please be warned that in some cases the patch fails for completely unknown reasons. There have been cases where different users on the same operating system, using the same Cemu version, playing the same game, experience different results. In these cases there is not much to do besides trying a different machine or Cemu version. +
+ +## What about Cemuhook by Rajkosto? +You may have noticed that Cemu automatically searches for loads DLL files named `cemuhook.dll`. This is intended for use with Cemuhook developed by Rajkosto. We hijack the DLL name in order to get Cemu to load our hook automatically. If you would like to still use Cemuhook by Rajkosto with Pretendo, name the Cemuhook by Rajkosto DLL to `true_cemuhook.dll` while keeping the Pretendo hook named `cemuhook.dll`. Our patcher will look for a DLL named `true_cemuhook.dll` and load it automatically. This is not officially supported by Rajkosto and may cause issues. Use at your own risk. + +## Wine/Linux support? +The Pretendo patches do work under wine. Rename `cemuhook.dll` to `dbghelp.dll` and place `dbghelp.dll` in the same folder as `Cemu.exe`. Run `winecfg` and navigate to `Libraries` and make sure `dbghelp` is added to the override list. Select it and click `Edit` and ensure the override is set to `Native then Builtin`. Wine should now allow your local `dbghelp.dll` override the built-in DLL \ No newline at end of file diff --git a/docs/en_US/install/citra.md b/docs/en_US/install/citra.md new file mode 100644 index 0000000..092db32 --- /dev/null +++ b/docs/en_US/install/citra.md @@ -0,0 +1,5 @@ +# Citra + +At the moment Citra does not support true online play, so it doesn't work with Pretendo. Moreover, it shows no sign of supporting true play in the future. + +Mikage, a 3DS emulator for mobile devices, may provide support in the future, though this is far from certain. diff --git a/docs/en_US/install/juxt.md b/docs/en_US/install/juxt.md new file mode 100644 index 0000000..9127d09 --- /dev/null +++ b/docs/en_US/install/juxt.md @@ -0,0 +1,67 @@ +# Installing Juxtaposition + +
+ ℹ️ This guide assumes that you have a Homebrewed System, and have already connected to Pretendo. If you have not yet set up your Pretendo Network ID, follow this guide to get started. +
+ +## Select your console + +- ### [Wii U](#wii-u-1) +- ### [3DS](#3ds-1) + +# Wii U + +### In Game Patches + +Nimble and Inkay already take care of in game patches for miiverse, so you're already good to go! + +
+ +### Applet Patch +Navigate to the [releases](https://github.com/PretendoNetwork/Martini/releases) page on the Martini GitHub repository + + + +Select the `martini-juxt-patcher.rpx` to download it + + + +Copy `martini-juxt-patcher.rpx` and place it on your SD card at `sd:/wiiu/apps/` + + + +Place your SD card back into your console and boot like normal. + +Open the Homebrew Launcher and launch `martini-juxt-patcher.rpx` + + + +After confirming the state of the Miiverse applet, press A to apply the patches. + + + +Once the patcher is done running and your console has rebooted, you're done! Have fun in Juxt! + + + +If you encountered any errors, try [searching](/docs/search) for the error code. If that doesn't work, get in touch with a developer in our [Discord](https://invite.gg/pretendo). + + + +# 3DS + +### In Game Patches + +Nimbus already takes care of most in game patches for miiverse, so you're already good to go! + +### Applet Patch + +First, download `Juxt.zip` from [here](https://cdn.discordapp.com/attachments/911878047895023637/937516295069515866/Juxt.zip). + +Extract `Juxt.zip` and copy the `3ds` and `luma` folders to the root of your SD card. You should now have the `000400300000BC02`, `000400300000BD02`, and `000400300000BE02` Luma patches along with the `juxt.pem` cert + + + +Place your SD card back into your console. Boot your console and ensure Luma patches are enabled. + +That's it! Have fun in Juxt! diff --git a/docs/en_US/install/wiiu.md b/docs/en_US/install/wiiu.md new file mode 100644 index 0000000..0a88715 --- /dev/null +++ b/docs/en_US/install/wiiu.md @@ -0,0 +1,93 @@ +# Wii U + +
+ ℹ️ This guide assumes that you have a Homebrewed System, if you don't please follow this guide on how to homebrew your system first. +
+ +## Select your homebrew environment + +- ### [Tiramisu](#tiramisu-1) +- ### [Aroma](#aroma-1) +- ### [Legacy](#legacy-1) + + +# Tiramisu + +To connect to Pretendo Network using Tiramisu you must use the [Nimble](https://github.com/PretendoNetwork/Nimble) set up module. There are 2 ways of obtaining the patch, either the stable release version or the bleeding edge version. + +### Tiramisu - Stable +Navigate to the [releases](https://github.com/PretendoNetwork/Nimble/releases) page on the Nimble GitHub repository + + + +Now download the `30_nimble.rpx` file from the latest release + + + +Place the downloaded `30_nimble.rpx` file on your SD card at `sd:/wiiu/environments/tiramisu/modules/setup` + + + +Place your SD card back into your console and boot like normal. You should now be connected to Pretendo Network + +### Tiramisu - Bleeding Edge +Navigate to the [actions](https://github.com/PretendoNetwork/Nimble/actions) page on the Nimble GitHub repository + + + +Select the `Nimble-CI` workflow and select the latest workflow run. _**Note:** At this stage you may also use the provided filters to only grab builds from specific branches, events, etc. By default the latest build, regardless of branch, is always shown._ + + + +Select the `nimble` artifact. This will download a `nimble.zip` zip file + + + +Extract `nimble.zip` and place the extracted `30_nimble.rpx` file on your SD card at `sd:/wiiu/environments/tiramisu/modules/setup` + + + +Place your SD card back into your console and boot like normal. You should now be connected to Pretendo Network + +# Aroma + +To connect to Pretendo Network using Aroma you must use the [Inkay](https://github.com/PretendoNetwork/Inkay) plugin. There are 2 ways of obtaining the patch, either the stable release version or the bleeding edge version. + +### Aroma - Stable +Navigate to the [releases](https://github.com/PretendoNetwork/Aroma/releases) page on the Aroma GitHub repository + + + +Now download the `Inkay-pretendo.wps` file from the latest release + + + +Place the downloaded `Inkay-pretendo.wps` file on your SD card at `sd:/wiiu/environments/aroma/plugins` + + + +Place your SD card back into your console and boot like normal. You should now be connected to Pretendo Network + +### Aroma - Bleeding Edge +Navigate to the [actions](https://github.com/PretendoNetwork/Aroma/actions) page on the Aroma GitHub repository + + + +Select the `Inkay-CI` workflow and select the latest workflow run. _**Note:** At this stage you may also use the provided filters to only grab builds from specific branches, events, etc. By default the latest build, regardless of branch, is always shown._ + + + +Select the `inkay` artifact. This will download a `inkay.zip` zip file + + + +Extract `inkay.zip` and place the extracted `Inkay-pretendo.wps` file on your SD card at `sd:/wiiu/environments/aroma/plugins` + + + +Place your SD card back into your console and boot like normal. You should now be connected to Pretendo Network + + +# Legacy + +Pretendo does not officially support legacy homebrew environments (Haxchi/CBHC) anymore. Legacy releases of the patcher may be found in old [releases](https://github.com/PretendoNetwork/Nimble/releases), and the source code may be found in the [old_hbl](https://github.com/PretendoNetwork/Nimble/tree/old_hbl) and [old_hbl_inkay](https://github.com/PretendoNetwork/Nimble/tree/old_hbl_inkay) branches on GitHub. However you will need to build these patches from source, and they will _**not**_ be receiving any updates or technical support. Please consider upgrading to Tiramisu/Aroma \ No newline at end of file diff --git a/docs/it-IT/welcome.md b/docs/it_IT/welcome.md similarity index 100% rename from docs/it-IT/welcome.md rename to docs/it_IT/welcome.md diff --git a/example.config.json b/example.config.json index 6e28a91..5edbc24 100644 --- a/example.config.json +++ b/example.config.json @@ -1,21 +1,40 @@ { "http": { - "port": 80, - "base_url": "http://localhost:80" - }, - "trello": { - "api_key": "key", - "api_token": "token", - "board_name": "name" + "port": 3000, + "base_url": "http://localhost:3000" }, "discord": { "client_id": "client_id", "client_secret": "client_secret", - "guild_id": "Guild ID", - "bot_token": "token", + "guild_id": "408718485913468928", + "bot_token": "bot_token", "tester_roles": [ - "role id" + "419704440333926401", + "882247322933801030" ] }, - "aes_key": "hex key here" -} \ No newline at end of file + "stripe": { + "goal_cents": 300000, + "secret_key": "secret_key", + "webhook_secret": "webhook_secret" + }, + "database": { + "account": { + "uri": "mongodb://127.0.0.1:27017", + "database": "pretendo", + "options": { + "useNewUrlParser": true, + "useUnifiedTopology": true + } + } + }, + "gmail": { + "user": "username", + "pass": "app-password", + "from": "User Name " + }, + "github": { + "graphql_token": "graphql_token" + }, + "aes_key": "aes_key" +} diff --git a/locales/AR_ar.json b/locales/AR_ar.json deleted file mode 100644 index 748fac0..0000000 --- a/locales/AR_ar.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "nav": { - "about": "عنا", - "faq": "أسئلة", - "docs": "Docs", - "credits": "الفريق", - "progress": "التقدم", - "blog": "البلوج", - "account": "Account" - }, - "hero": { - "subtitle": "سيرفرات الألعاب", - "title": "إعادة إنشاء", - "text": "إن بريتندو بديل مجاني و مصدر مفتوح لسيرفرات ال3دي اس و الوي يو ,يسمح بالاتصال عبر الإنترنت حتي بعد إغلاق السيرفرات الأصلية", - "buttons": { - "readMore": "أقرأ اكثر" - } - }, - "aboutUs": { - "title": "معلومات عنا", - "paragraphs": [ - "إن بريتندو مشروع مصدر مفتوح هدفه إعادة إنشاء شبكة نينتندو لل3دي اس و الوي يو عن طريق الهندسة العكسية", - ".خدماتنا ستكون مجاناً ومصدرها مفتوح فستعيش وقتا طويلاً حتي بعد إغلاق شبكة نينتندو" - ] - }, - "progress": { - "title": "تقدم", - "paragraphs": [ - "نحن نعمل الآن على الميفيرز و الأكونتات وإتصالها مع السيرفرات", - "و نعمل علي ماريوكارت 7 لل3دي اس و نريد ان نعمل علي الألعاب الآخري في اسرع وقت" - ] - }, - "faq": { - "title": "بعض الأسئلة المكررة", - "text": ":هنا بعض الأسئلة المتكررة بإجابتها", - "QAs": [ - { - "question": "ما هو بريتندو؟", - "answer": "إن بريتندو مصدر مفتوح بديل عن شبكة نينتندو هدفها إنشاء سيرفرات لعائلة ال3 دي اس و الوي يو هدفنا الحفاظ علي الاجزاء الونلاين و الاستمتاع باقصي حد" - }, - { - "question": "هل هويتي الشخصية علي شبكة نينتندو ستستمر علي بريتندو؟", - "answer": "للأسف لا اي الهويات الشخصية لشبكة نينتندو لن تعمل علي بريتندو لأن نينتندو لديم المعلومات الشخصية؛ و من الرغم من أن هجرة الهوية الشخصية من شبكة نينتندو إلي بريتندو ممكنة إلا انها لها خطر و لا نريد أن يكون معنا المعلومات الشخصية" - }, - { - "question": "كيف استخدم بريتندو؟", - "answer": "إن بريتندو ليس جاهز للاستخدام العام ولكن عندما يكون جاهزا ستسطيع أن نسخدمه من خلال الهومبرو باتشر" - }, - { - "question": "هل تعرف متي تكون خدمة او خاصية جاهزة؟", - "answer": "لا معظم خدمات بريتندو يتم إنشائها مفردة إي شخص قد يعمل علي الميفيرز و شخصاً أخر قد يعمل علي الاصدقاء و الاكونتات فلا نستطيع أن نعرف متي ستكون جاهزة" - }, - { - "question": "هل بريتندو يعمل علي سيمو و المحاكيات؟", - "answer": "إن بريتندو مصمم لل3 دي اس و الوي يو؛ و في الوقت الحالي سيمو هو المحاكية الوحيد يدعِم شبكة نينتندو سي مد لا يدعم شبكة بريتندو مباشرا و لكن ستصتيع استخدامه (حالياً سيمو لا يدعم شبكة بريتندو)إن بريتندو مصمم لل3 دي اس و الوي يو؛ و في الوقت الحالي سيمو هو المحاكية الوحيد يدعِم شبكة نينتندو سي مد لا يدعم شبكة بريتندو مباشرا و لكن ستصتيع استخدامه (حالياً سيمو لا يدعم شبكة بريتندو)" - }, - { - "question": "لو اتمنعنت من شبكة بريتندو هل سأستمتر ممتنع من بريتندو؟", - "answer": "لا جميع المستخدمين لن يكونوا محرمين و لكن يجب أن تمشي وراء القوانين او سيتمامتناعك" - }, - { - "question": "هل سيدعم بريتندو الوى و السوتش؟", - "answer": "الوي لديها سيرفرات مخصصة من ويميفاي و ليس لدينا الهدف للسويتش بسبب اختلافها عن شبكة نينتندو" - }, - { - "question": "هل احتاج أن اهكر حتي اتصل؟", - "answer": "نعم ستحتاج إلي تهكير جهازك لكن علي الوي يو تحتاج فقط إلي الهومبرو لانشر اي هاكسي او موخا اما علي ال3 دي اس سيتم الاعلان في وقتا لاحقاً" - } - ] - }, - "showcase": { - "title": "What we make", - "text": "Our project has many components. Here are some of them.", - "cards": [ - { - "title": "Game servers", - "caption": "Bringing back your favorite games and content using custom servers." - }, - { - "title": "Juxtaposition", - "caption": "A re-imagining of Miiverse, as if it were made in the modern era." - }, - { - "title": "Cemu support", - "caption": "Play your favorite Wii U titles even without a console!" - } - - ] - }, - "credits": { - "title": "الفريق", - "text": "قابل الفريق وراء المشروع", - "people": [ - { - "name": "Jonathan Barrow (jonbarrow)", - "caption": "مالك المشروع والمطور الرئيسي", - "picture": "https://github.com/jonbarrow.png", - "github": "https://github.com/jonbarrow" - }, - { - "name": "Jemma (CaramelKat)", - "caption": "باحث و مطور الميفيرز", - "picture": "https://github.com/caramelkat.png", - "github": "https://github.com/CaramelKat" - }, - { - "name": "Rambo6Glaz", - "caption": "مثبت الشبكة و باحث الأجهزة", - "picture": "https://github.com/Rambo6Glaz.png", - "github": "https://github.com/Rambo6Glaz" - }, - { - "name": "quarky", - "caption": "مباحث البوس و مبرمج التصحيحات", - "picture": "https://github.com/QuarkTheAwesome.png", - "github": "https://github.com/QuarkTheAwesome" - }, - { - "name": "SuperMarioDaBom", - "caption": "باحث الأجهزة", - "picture": "https://github.com/supermariodabom.png", - "github": "https://github.com/SuperMarioDaBom" - }, - { - "name": "Jip Fr", - "caption": "مطور الويب والبحث المبكر للالمحل الإلكتروني", - "picture": "https://github.com/jipfr.png", - "github": "https://github.com/jipfr" - }, - { - "name": "monty", - "caption": "مطور الويب", - "picture": "https://github.com/ashmonty.png", - "github": "https://github.com/ashmonty" - }, - { - "name": "mrjvs", - "caption": "مصمم الويب", - "picture": "https://github.com/mrjvs.png", - "github": "https://github.com/mrjvs" - } - ] - }, - "specialThanks": { - "title": "شكرا خاصة", - "text": "من غيرهم، بريتندو لن نكن ب شكلها", - "people": [ - { - "name": "superwhiskers", - "caption": "مطور مكتبة كرانش", - "picture": "https://github.com/superwhiskers.png", - "github": "https://github.com/superwhiskers" - }, - { - "name": "Stary", - "caption": "مبرمج و مففك ال3 دي اس و نكس", - "picture": "https://github.com/Stary2001.png", - "github": "https://github.com/Stary2001" - }, - { - "name": "Billy", - "caption": "المحافظ", - "picture": "https://github.com/InternalLoss.png", - "github": "https://github.com/InternalLoss" - }, - { - "name": "Shutterbug2000", - "caption": "باحث ماريو كارت 7 و ال3 دي اس", - "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", - "github": "https://github.com/shutterbug2000" - }, - { - "name": "Kinnay", - "special": "شكر خاص", - "caption": "باحث في هياكل بيانات نينتندو", - "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", - "github": "https://github.com/Kinnay" - }, - { - "name": "NinStar", - "caption": "Icons for the Mii Editor and Juxt reactions", - "picture": "https://github.com/ninstar.png", - "github": "https://github.com/ninstar" - }, - { - "name": "GitHub contributors", - "caption": "Localizations and other contributions", - "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" - } - ] - }, - "discordJoin": { - "title": "Stay up to date", - "text": "Join our Discord server to get the latest updates on the project.", - "widget": { - "text": "Get realtime updates to our progress", - "button": "Join the server" - } - }, - "footer": { - "socials": "Socials", - "usefulLinks": "Useful links", - "widget": { - "captions": [ - "Want to keep updated?", - "Join our Discord server!" - ], - "button": "Join now!" - } - }, - "progressPage": { - "title": "تقدمنا", - "description": "تحقق من تقدم المشروع والأهداف! (يتم تحديثه كل ساعة أو نحو ذلك ، ولا يعكس جميع أهداف المشروع أو تقدمه)" - }, - "blogPage": { - "title": "البلوج", - "description": "آخر التحديثات في أجزاء مكثفة. إذا كنت ترغب في رؤية المزيد من التحديثات المتكررة ، ففكر في دعمنا على Patreon . " - }, - "localizationPage": { - "title": "!لنترجم", - "description": "الصق رابطا إلي لغة الزيسون يمكن الوصول إليها بشكل عام لاختبارها على موقع الويب", - "instructions": "اظهر خطوات الترجمة", - "fileInput": "ملف للتجربة", - "filePlaceholder": "https://a.link.to/the_file.json", - "button": "Test file" - }, - "docs": { - "missingInLocale": "This page is unavailable in your locale. Please check the English version below.", - "quickLinks": { - "header": "Quick links", - "links": [ - { - "header": "Install Pretendo", - "caption": "View the setup instructions" - }, - { - "header": "Got an error?", - "caption": "Search for it here" - } - ] - } - } -} diff --git a/locales/IT_it.json b/locales/IT_it.json deleted file mode 100644 index 907ff30..0000000 --- a/locales/IT_it.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "nav": { - "about": "Info", - "faq": "FAQ", - "docs": "Documentazione", - "credits": "Riconoscimenti", - "progress": "Progresso", - "blog": "Blog", - "account": "Account" - }, - "hero": { - "subtitle": "Server online", - "title": "Ricreati", - "text": "Pretendo è un'alternativa gratuita e open source ai server Nintendo per 3DS e Wii U, con l'obiettivo di permettere di connettersi online anche dopo la terminazione dei server originali", - "buttons": { - "readMore": "Scopri di più" - } - }, - "aboutUs": { - "title": "Informazioni", - "paragraphs": [ - "Pretendo è un progetto open source con l'obiettivo di ricreare Nintendo Network per 3DS e Wii U utilizzando ingegneria inversa clean-room.", - "Dato che i nostri server saranno gratuiti e open source, essi potranno esistere anche molto dopo l'inevitabile chiusura di Nintendo Network." - ] - }, - "progress": { - "title": "Progresso", - "paragraphs": [ - "Al momento stiamo lavorando su Miiverse, insieme ai nostri server per gli account e alle loro integrazioni con gli altri servizi.", - "Per la 3DS stiamo anche lavorando su Mario Kart 7, e vorremmo continuare a lavorare su altri giochi quando possibile." - ] - }, - "faq": { - "title": "Domande frequenti (FAQ)", - "text": "Ecco alcune domande che ci vengono poste frequentemente.", - "QAs": [ - { - "question": "Cos'è Pretendo?", - "answer": "Pretendo è un progetto open source con l'obiettivo di ricreare Nintendo Network per la famiglia di console 3DS e Wii U. Il nostro obiettivo è preservare le funzionalità online di queste console, per permettere ai giocatori di continuare a divertirsi con i loro giochi preferiti per Wii U e 3DS al massimo della loro capacità." - }, - { - "question": "Potrò continuare ad utilizzare i miei NNID su Pretendo?", - "answer": "Purtroppo, no. I NNID esistenti non funzioneranno su Pretendo, poiché solo Nintendo è in possesso dei tuoi dati utente; benché una migrazione da-NNID-a-PNID sia teoricamente possibile, sarebbe rischiosa e richiederebbe dati personali dell'utente che preferiremmo non avere." - }, - { - "question": "Come si usa Pretendo?", - "answer": "Pretendo non è ancora pronta per l'uso pubblico. Quando lo sarà, per usare Pretendo ti basterà eseguire il nostro patcher homebrew sulla tua console." - }, - { - "question": "Sapete quando sarà pronta/o?", - "answer": "No. Molte delle funzionalità/servizi di Pretendo sono sviluppate indipendentemente (per esempio, uno sviluppatore potrebbe lavorare su Miiverse mentre un altro sta lavorando su Account e Amici) e per questo non possiamo sapere quanto tempo manca al completamento." - }, - { - "question": "Pretendo funziona su Cemu/emulatori?", - "answer": "Pretendo è sviluppata con l'hardware Wii U e 3DS a cuore; in questo momento l'unico emulatore per queste console che supporta NN è Cemu. Cemu non supporta server custom ufficialmente, ma utilizzare Pretendo con Cemu dovrebbe comunque essere possibile.
Al momento Pretendo non supporta Cemu." - }, - { - "question": "Se sono bannato su Nintendo Network, rimarrò bannato quando userò Pretendo?", - "answer": "Non avremo accesso ai ban di Nintendo Network, quindi quegli utenti non saranno bannati sul nostro servizio. Ci saranno comunque regole da seguire mentre si usa il servizio, che se non verranno seguite potranno portare a un ban." - }, - { - "question": "Pretendo supporterà la Wii/Switch?", - "answer": "Esistono già server custom per Wii forniti da Wiimmfi. Al momento non abbiamo intenzione di supportare la Switch poiché il suo servizio online è a pagamento ed è completamente diverso da Nintendo Network." - }, - { - "question": "Avrò bisogno di hack per connettermi?", - "answer": "Sì, dovrai modificare il tuo dispositivo per connetterti; tuttavia, su Wii U avrai solo bisogno di poter accedere all'Homebrew Launcher (es. Haxchi, Coldboot Haxchi, o anche l'exploit web per browser). Informazioni su come connettersi su 3DS saranno disponibili in futuro." - } - ] - }, - "showcase": { - "title": "Cosa facciamo", - "text": "Il nostro progetto ha vari componenti. Eccone alcuni.", - "cards": [ - { - "title": "Server di gioco", - "caption": "Riportiamo in vita i tuoi giochi e contenuti preferiti usando server custom." - }, - { - "title": "Juxtaposition", - "caption": "Una reimmaginazione di Miiverse, come se fosse stato fatto nell'era moderna." - }, - { - "title": "Supporto per Cemu", - "caption": "Gioca ai tuoi giochi preferiti per Wii U anche senza avere una console!" - } - - ] - }, - "credits": { - "title": "Il team", - "text": "Ecco il team dietro al progetto", - "people": [ - { - "name": "Jonathan Barrow (jonbarrow)", - "caption": "Proprietario del progetto e sviluppatore principale", - "picture": "https://github.com/jonbarrow.png", - "github": "https://github.com/jonbarrow" - }, - { - "name": "Jemma (CaramelKat)", - "caption": "Ricerca e sviluppo Miiverse", - "picture": "https://github.com/caramelkat.png", - "github": "https://github.com/CaramelKat" - }, - { - "name": "Rambo6Glaz", - "caption": "Installer di rete e ricerca su console", - "picture": "https://github.com/Rambo6Glaz.png", - "github": "https://github.com/Rambo6Glaz" - }, - { - "name": "quarky", - "caption": "Ricerca BOSS e sviluppo patch", - "picture": "https://github.com/QuarkTheAwesome.png", - "github": "https://github.com/QuarkTheAwesome" - }, - { - "name": "SuperMarioDaBom", - "caption": "Ricerca su console e altri sistemi", - "picture": "https://github.com/supermariodabom.png", - "github": "https://github.com/SuperMarioDaBom" - }, - { - "name": "Jip Fr", - "caption": "Sviluppo web principale", - "picture": "https://github.com/jipfr.png", - "github": "https://github.com/jipfr" - }, - { - "name": "monty", - "caption": "Sviluppo web", - "picture": "https://github.com/ashmonty.png", - "github": "https://github.com/ashmonty" - }, - { - "name": "mrjvs", - "caption": "Designer", - "picture": "https://github.com/mrjvs.png", - "github": "https://github.com/mrjvs" - } - ] - }, - "specialThanks": { - "title": "Ringraziamenti speciali", - "text": "Senza di loro, Pretendo non sarebbe dove è oggi.", - "people": [ - - { - "name": "superwhiskers", - "caption": "Sviluppo libreria crunch", - "picture": "https://github.com/superwhiskers.png", - "github": "https://github.com/superwhiskers" - }, - { - "name": "Stary", - "caption": "Sviluppo 3DS e strumento di analisi NEX", - "picture": "https://github.com/Stary2001.png", - "github": "https://github.com/Stary2001" - }, - { - "name": "Billy", - "caption": "Conservazionista", - "picture": "https://github.com/InternalLoss.png", - "github": "https://github.com/InternalLoss" - }, - { - "name": "Shutterbug2000", - "caption": "Ricerca su Mario Kart 7 e 3DS", - "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", - "github": "https://github.com/shutterbug2000" - }, - { - "name": "Kinnay", - "special": "Ringraziamenti speciali", - "caption": "Ricerca su strutture dati Nintendo", - "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", - "github": "https://github.com/Kinnay" - }, - { - "name": "NinStar", - "caption": "Icons for the Mii Editor and Juxt reactions", - "picture": "https://github.com/ninstar.png", - "github": "https://github.com/ninstar" - }, - { - "name": "Contributori su GitHub", - "caption": "Localizzazioni e altre contribuzioni", - "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", - "github": "https://github.com/PretendoNetwork" - } - ] - }, - "discordJoin": { - "title": "Resta aggiornato", - "text": "Entra nel nostro server su Discord per ottenere gli ultimi aggiornamenti sul progetto.", - "widget": { - "text": "Ricevi aggiornamenti in tempo reale", - "button": "Unisciti al server" - } - }, - "footer": { - "socials": "Social", - "usefulLinks": "Link utili", - "widget": { - "captions": [ - "Vuoi rimanere aggiornato?", - "Unisciti al nostro server su Discord!" - ], - "button": "Unisciti ora!" - } - }, - "progressPage": { - "title": "Il nostro progresso", - "description": "Controlla il progresso del progetto e gli obiettivi! (Aggiornato circa ogni ora, non riflette TUTTI gli obiettivi e il progresso del progetto)" - }, - "blogPage": { - "title": "Blog", - "description": "Gli ultimi aggiornamenti, condensati. Se sei interessato a ricevere aggiornamenti più frequenti, considera l'idea di supportarci su Patreon." - }, - "localizationPage": { - "title": "Localizziamo", - "description": "Incolla il link di una localizzazione in formato JSON accessibile al pubblico per testarla sul sito", - "instructions": "Vedi le istruzioni su come localizzare", - "fileInput": "File da testare", - "filePlaceholder": "https://il.link.di/un_file.json", - "button": "Testa file" - }, - "docs": { - "missingInLocale": "Questa pagina non è disponibile nella tua lingua. Per favore, controlla la versione in inglese sotto.", - "quickLinks": { - "header": "Link rapidi", - "links": [ - { - "header": "Installa Pretendo", - "caption": "Mostra le istruzioni di setup" - }, - { - "header": "Hai un errore?", - "caption": "Cercalo qui" - } - ] - } - } -} \ No newline at end of file diff --git a/locales/NL_nl.json b/locales/NL_nl.json deleted file mode 100644 index 916b233..0000000 --- a/locales/NL_nl.json +++ /dev/null @@ -1,244 +0,0 @@ -{ - "nav": { - "about": "Over", - "faq": "FAQ", - "docs": "Docs", - "credits": "Credits", - "progress": "Vooruitgang", - "blog": "Blog", - "account": "Account" - }, - "hero": { - "subtitle": "Game servers", - "title": "Nagemaakt", - "text": "Pretendo is een gratis en open source vervanger voor de servers van Nintendo voor de 3DS en de Wii U, zodat iedereen online kan spelen, zelfs als de Nintendo servers stoppen", - "buttons": { - "readMore": "Lees meer" - } - }, - "aboutUs": { - "title": "Over ons", - "paragraphs": [ - "Pretendo is een open source project met het doel om het Nintendo Network voor 3DS en Wii U na te maken met clean-room reverse engineering.", - "Omdat onze diensten gratis en open source zijn, kunnen ze lang na het sluiten van Nintendo Network bestaan." - ] - }, - "progress": { - "title": "Vooruitgang", - "paragraphs": [ - "We werken momentele aan Miiverse, de account servers, en de intergratie met de servers.", - "We werken ook aan Mario Kart 7 voor de 3DS, met een wens om aan andere games te werken wanneer we die kans krijgen." - ] - }, - "faq": { - "title": "Veelgestelde vragen", - "text": "Hier zijn een aantal vragen die wij vaak horen.", - "QAs": [ - { - "question": "Wat is Pretendo?", - "answer": "Pretendo is een open source Nintendo Network vervanger met het doel om custom servers voor de Wii U en 3DS familie te maken. Ons doel is om de online functionaliteit van deze consoles te behouden, zodat spelers hun favoriete Wii U en 3DS games kunnen blijven spelen." - }, - { - "question": "Blijft mijn bestaande NNID werken op Pretendo?", - "answer": "Jammer genoeg niet. Bestande NNIDs zullen niet gaan werken op Pretendo, omdat enkel Nintendo je informatie heeft; Al is het zo dat een NNID-naar-PNID migratie technisch mogelijk, het zou wel gevaarlijk zijn en zouden we gevoelige gebruikers informatie krijgen die we niet willen bewaren." - }, - { - "question": "Hoe installeer ik Pretendo?", - "answer": "Pretendo is momenteel nog niet klaar voor publiekelijk gebruik. Zodra het dat wel is, kan je Pretendo gebruiken door een homebrew patcher te gebruiken op je console." - }, - { - "question": "Wanneer is klaar?", - "answer": "Dat weten we niet. Veel Pretendo diensten worden apart ontwikkeld (Miiverse wordt dan bijvoorbeeld door één developer ontwikkeld, en Accounts / Vrienden door een andere). Daardoor kunnen we geen datum geven voor wanneer het af is." - }, - { - "question": "Werkt Pretendo op Cemu of andere emulators?", - "answer": "Pretendo wordt voornamelijk ontwikkeld voor de hardware van de Wii U en 3DS. Momenteel is de enige emulator met NN support, Cemu. Cemu ondersteunt niet officieel custom servers, maar het zou alsnog mogelijk moeten zijn om Pretendo te gebruiken in Cemu.
Momenteel ondersteunt Pretendo Cemu niet." - }, - { - "question": "Als ik van Nintendo Network verbannen ben, blijf ik dan verbannen op Pretendo?", - "answer": "Nee. We hebben geen toegang tot de bans van Nintendo Network, dus je zal niet direct verbannen zijn op onze dienst. Echter zullen wij wel regels hebben bij het gebruik van onze diensten. Als je deze breekt, zal je verbannen worden." - }, - { - "question": "Gaat Pretendo ook de Wii of Switch ondersteunen?", - "answer": "Er zijn al custom servers voor Wii, namelijk Wiimmfi. Wij willen op het moment de Switch niet ondersteunen omdat Switch online betaald is, en compleet anders is dan Nintendo Network." - }, - { - "question": "Ga ik hacks nodig hebben om te verbinden met Pretendo?", - "answer": "ja, je zal inderdaad hacks nodig hebben. Op de Wii U heb je enkel de Homebrew launcher (d.m.v bijvoorbeeld Haxchi, Coldboot Haxchi, of zelfs de web browser exploit) nodig. Over de 3DS plaatsen we in de toekomst meer informatie." - } - ] - }, - "showcase": { - "title": "What we make", - "text": "Our project has many components. Here are some of them.", - "cards": [ - { - "title": "Game servers", - "caption": "Bringing back your favorite games and content using custom servers." - }, - { - "title": "Juxtaposition", - "caption": "A re-imagining of Miiverse, as if it were made in the modern era." - }, - { - "title": "Cemu support", - "caption": "Play your favorite Wii U titles even without a console!" - } - - ] - }, - "credits": { - "title": "Het team", - "text": "Ontmoet het team achter het project", - "people": [ - { - "name": "Jonathan Barrow (jonbarrow)", - "caption": "Eigenaar en hoofd ontwikkelaar", - "picture": "https://github.com/jonbarrow.png", - "github": "https://github.com/jonbarrow" - }, - { - "name": "Jemma (CaramelKat)", - "caption": "Miiverse research en ontwikkeling", - "picture": "https://github.com/caramelkat.png", - "github": "https://github.com/CaramelKat" - }, - { - "name": "Rambo6Glaz", - "caption": "Netwerk installeerder en console research", - "picture": "https://github.com/Rambo6Glaz.png", - "github": "https://github.com/Rambo6Glaz" - }, - { - "name": "quarky", - "caption": "Onderzoek naar BOSS en patch ontwikkeling", - "picture": "https://github.com/QuarkTheAwesome.png", - "github": "https://github.com/QuarkTheAwesome" - }, - { - "name": "SuperMarioDaBom", - "caption": "Onderzoek naar console en andere systemen", - "picture": "https://github.com/supermariodabom.png", - "github": "https://github.com/SuperMarioDaBom" - }, - { - "name": "Jip Fr", - "caption": "Website ontwikkelaar", - "picture": "https://github.com/jipfr.png", - "github": "https://github.com/jipfr" - }, - { - "name": "monty", - "caption": "Website ontwikkelaar", - "picture": "https://github.com/ashmonty.png", - "github": "https://github.com/ashmonty" - }, - { - "name": "mrjvs", - "caption": "Ontwerper", - "picture": "https://github.com/mrjvs.png", - "github": "https://github.com/mrjvs" - } - ] - }, - "specialThanks": { - "title": "Speciale dank", - "text": "Zonder deze mensen zou Pretendo vandaag niet zijn waar het is.", - "people": [ - { - "name": "superwhiskers", - "caption": "crunch ontwikkeling", - "picture": "https://github.com/superwhiskers.png", - "github": "https://github.com/superwhiskers" - }, - { - "name": "Stary", - "caption": "3DS ontwikkelaar and NEX dissector", - "picture": "https://github.com/Stary2001.png", - "github": "https://github.com/Stary2001" - }, - { - "name": "Billy", - "caption": "Archivist", - "picture": "https://github.com/InternalLoss.png", - "github": "https://github.com/InternalLoss" - }, - { - "name": "Shutterbug2000", - "caption": "Onderzoek naar Mario Kart 7 en 3DS", - "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", - "github": "https://github.com/shutterbug2000" - }, - { - "name": "Kinnay", - "special": "Special thanks", - "caption": "Onderzoek naar Nintendo data structuur", - "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", - "github": "https://github.com/Kinnay" - }, - { - "name": "NinStar", - "caption": "Icons for the Mii Editor and Juxt reactions", - "picture": "https://github.com/ninstar.png", - "github": "https://github.com/ninstar" - }, - { - "name": "GitHub contributors", - "caption": "Localizations and other contributions", - "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", - "github": "https://github.com/PretendoNetwork" - } - ] - }, - "discordJoin": { - "title": "Stay up to date", - "text": "Join our Discord server to get the latest updates on the project.", - "widget": { - "text": "Get realtime updates to our progress", - "button": "Join the server" - } - }, - "footer": { - "socials": "Socials", - "usefulLinks": "Useful links", - "widget": { - "captions": [ - "Want to keep updated?", - "Join our Discord server!" - ], - "button": "Join now!" - } - }, - "progressPage": { - "title": "Onze vooruitgang", - "description": "Zie hier onze vooruitgang! (Wordt elk uur ververst, geeft niet ALLE vooruitgang en doelen weer)" - }, - "blogPage": { - "title": "Blog", - "description": "De meest recente samenvattingen. Als je vaker nieuws wil, overweeg ons op Patreon te ondersteunen." - }, - "localizationPage": { - "title": "Laten we meer talen toe voegen!", - "description": "Voeg hier een link in voor een openbaar JSON bestand om het op de site te testen.", - "instructions": "Zie hier instructies voor het vertalen", - "fileInput": "Bestand om te testen", - "filePlaceholder": "https://een.link.naar/het_bestand.json", - "button": "Test bestand" - }, - "docs": { - "missingInLocale": "This page is unavailable in your locale. Please check the English version below.", - "quickLinks": { - "header": "Quick links", - "links": [ - { - "header": "Install Pretendo", - "caption": "View the setup instructions" - }, - { - "header": "Got an error?", - "caption": "Search for it here" - } - ] - } - } -} \ No newline at end of file diff --git a/locales/TR_tr.json b/locales/TR_tr.json deleted file mode 100644 index f3dc696..0000000 --- a/locales/TR_tr.json +++ /dev/null @@ -1,244 +0,0 @@ -{ - "nav": { - "about": "Hakkımızda", - "faq": "SSS", - "docs": "Docs", - "credits": "Katkıda Bulunanlar", - "progress": "İlerleme", - "blog": "Blog", - "account": "Account" - }, - "hero": { - "subtitle": "Oyun sunucuları", - "title": "Yenilendi", - "text": "Pretendo, Nintendo'nun Wii U ve 3DS konsollarının sunucuları yerine kullanılabilmesi için tasarlanmış, asıl sunucular kapatılmış olmasına rağmen çevrimiçi bağlantıya olanak sağlayan ücretsiz açık kaynaklı bir yazılımdır.", - "buttons": { - "readMore": "Daha fazlasını oku" - } - }, - "aboutUs": { - "title": "Hakkımızda", - "paragraphs": [ - "Pretendo, Wii U ve 3DS için yapılmış Nintendo Network'ü temiz oda tekniğini kullanarak yeniden oluşturmayı hedefleyen açık kaynaklı bir projedir.", - "Hem ücretsiz hem de açık kaynaklı olan hizmetlerimiz, Nintendo Network'ün kaçınılmaz kapanışından sonra uzun bir süre çalışabilecektir." - ] - }, - "progress": { - "title": "İlerleme", - "paragraphs": [ - "Şu anda, hesap sunucularımız ve hizmetlerle entegrason ile birlikte Miiverse üzerinde çalışıyoruz.", - "3DS için ise, mümkün olduğu vakit diğer oyunlar üzerinde çalışmaya devam etme arzusuyla Mario Kart 7 üzerinde çalışıyoruz." - ] - }, - "faq": { - "title": "Sıkça Sorulan Sorular", - "text": "Bize sorulan bazı genel sorular ve cevapları:", - "QAs": [ - { - "question": "Pretendo nedir?", - "answer": "Pretendo, Wii U ve 3DS konsolları için özel sunucu oluşturmayı amaç edinen Nintendo Network replasmanıdır. Hedefimiz, oyuncuların favori Wii U ve 3DS oyunlarını tam kapasitede oynayabilmeleri için konsolların çevrimiçi işlevlerini temin etmektir." - }, - { - "question": "Varolan Nintendo Network Kimliklerim Pretendo'da çalışacak mı?", - "answer": "Ne yazık ki, hayır. Varolan Nintendo Kimlikleri, kullanıcı verilerinize sadece Nintendo sahip olduğundan, Pretendo'da çalışmaz. Tabi, Nintendo Network'ten Prentendo Network'e kimlik intikali teorik olarak mümkündür. Ancak bu işlemin risk ihtimali bulunmakta; ve işlem için sahip olmak istemediğimiz hassas kullanıcı verileri gerekmektedir." - }, - { - "question": "Pretendo'yu nasıl kullanırım?", - "answer": "Pretendo, şuanlık topluluk kullanımı için uygun bir vaziyette değil. Bununla birlikte, hazır olduğunda Pretendo'yu sadece konsolunuzdaki Homebrew Yamamızı çalıştırarak kullanabileceksiniz." - }, - { - "question": "<Özel aksam/Hizmet> işlevinin ne zaman hazır olacağını biliyor musunuz?", - "answer": "Maalesef. Pek çok Pretendo aksamı/hizmeti bağımsız olarak geliştirilmekte (örneğin, Miiverse üzerinde bir geliştirici çalışırken, Hesaplar ve Arkadaşlar üzerinde başka bir geliştirici çalışmaktadır). Bu yüzden, bu işin ne kadar süreceği hakkında herhangi bir tahmin yapamıyoruz." - }, - { - "question": "Pretendo Cemu/emülatörlerde çalışır mı??", - "answer": "Pretendo tasarımında, Wii U ve 3DS donanımını esas alır. Konsollara Nintendo Network desteği sağlayan tek emülatör de Cemu'dur. Cemu resmî olarak özel suncuları desteklemiyor ancak yine de Pretendo'yu Cemu üzerinden kullanabilmek mümkün olmalı.
Pretendo şu anlık Cemu'yu desteklemiyor." - }, - { - "question": "Nintendo Network'ten banlandıysam, Pretendo'da da banlı kalır mıyım?", - "answer": "Nintendo Network'ün banlarına erişemediğimizden dolayı herhangi bir kullanıcı banlı olmayacak. Ancak, hizmetimiz kullanılırken uyulması gereken kurallar olacak ve uyulmadığı takdirde banlanmalar meydana gelebilecektir." - }, - { - "question": "Pretendo Wii/Switch'i destekleyecek mi?", - "answer": "Wii'nin hâlihazırda Wiimmfi tarafından sağlanan özel sunucuları bulunmaktadır. Switch için ise, hem sunucular çalıştığından hem de sistemi Nintendo Network'ten tamamen farklı olduğundan dolayı, şimdilik üzerine uğraşmayı düşünmüyoruz." - }, - { - "question": "Bağlanmak için hacke ihtiyacım var mı?", - "answer": "Evet, cihazınızı hacklemeniz gerekmektedir. Ancak, Wii U'nuzda sadece Homebrew Launcher'a erişebilmeniz gerekmektedir (yani Haxchi, Coldboot Haxchi veya web tarayıcı exploiti gerekmektedir). 3DS'in nasıl bağlanacağı ile ilgili bilgilendirme ileriki tarihlerde verilecektir." - } - ] - }, - "showcase": { - "title": "What we make", - "text": "Our project has many components. Here are some of them.", - "cards": [ - { - "title": "Game servers", - "caption": "Bringing back your favorite games and content using custom servers." - }, - { - "title": "Juxtaposition", - "caption": "A re-imagining of Miiverse, as if it were made in the modern era." - }, - { - "title": "Cemu support", - "caption": "Play your favorite Wii U titles even without a console!" - } - - ] - }, - "credits": { - "title": "Ekip", - "text": "Projenin arkasındaki ekiple tanışın", - "people": [ - { - "name": "Jonathan Barrow (jonbarrow)", - "caption": "Proje sahibi ve rehber geliştirici", - "picture": "https://github.com/jonbarrow.png", - "github": "https://github.com/jonbarrow" - }, - { - "name": "Jemma (CaramelKat)", - "caption": "Miiverse üzerine araştırma ve geliştirme", - "picture": "https://github.com/caramelkat.png", - "github": "https://github.com/CaramelKat" - }, - { - "name": "Rambo6Glaz", - "caption": "Ağ yükleyicisi ve konsol üzerine araştırma", - "picture": "https://github.com/Rambo6Glaz.png", - "github": "https://github.com/Rambo6Glaz" - }, - { - "name": "quarky", - "caption": "BOSS research and patch development", - "picture": "https://github.com/QuarkTheAwesome.png", - "github": "https://github.com/QuarkTheAwesome" - }, - { - "name": "SuperMarioDaBom", - "caption": "Konsol ve diğer sistem üzerine araştırma", - "picture": "https://github.com/supermariodabom.png", - "github": "https://github.com/SuperMarioDaBom" - }, - { - "name": "Jip Fr", - "caption": "Web development lead", - "picture": "https://github.com/jipfr.png", - "github": "https://github.com/jipfr" - }, - { - "name": "monty", - "caption": "Web sayfası geliştirme", - "picture": "https://github.com/ashmonty.png", - "github": "https://github.com/ashmonty" - }, - { - "name": "mrjvs", - "caption": "Designer", - "picture": "https://github.com/mrjvs.png", - "github": "https://github.com/mrjvs" - } - ] - }, - "specialThanks": { - "title": "Special thanks", - "text": "Without them, Pretendo wouldn't be where it is today.", - "people": [ - { - "name": "superwhiskers", - "caption": "Sıkıştırılmış kütüphane geliştirme", - "picture": "https://github.com/superwhiskers.png", - "github": "https://github.com/superwhiskers" - }, - { - "name": "Stary", - "caption": "3DS dev and NEX dissector", - "picture": "https://github.com/Stary2001.png", - "github": "https://github.com/Stary2001" - }, - { - "name": "Billy", - "caption": "Preservationist", - "picture": "https://github.com/InternalLoss.png", - "github": "https://github.com/InternalLoss" - }, - { - "name": "Shutterbug2000", - "caption": "Mario Kart 7 ve 3DS üzerine araştırma", - "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", - "github": "https://github.com/shutterbug2000" - }, - { - "name": "Kinnay", - "special": "Özel teşekkür", - "caption": "Nintendo'nun veri yapıları üzerine araştırma", - "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", - "github": "https://github.com/Kinnay" - }, - { - "name": "NinStar", - "caption": "Icons for the Mii Editor and Juxt reactions", - "picture": "https://github.com/ninstar.png", - "github": "https://github.com/ninstar" - }, - { - "name": "GitHub contributors", - "caption": "Localizations and other contributions", - "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", - "github": "https://github.com/PretendoNetwork" - } - ] - }, - "discordJoin": { - "title": "Stay up to date", - "text": "Join our Discord server to get the latest updates on the project.", - "widget": { - "text": "Get realtime updates to our progress", - "button": "Join the server" - } - }, - "footer": { - "socials": "Socials", - "usefulLinks": "Useful links", - "widget": { - "captions": [ - "Want to keep updated?", - "Join our Discord server!" - ], - "button": "Join now!" - } - }, - "progressPage": { - "title": "İlerlememiz", - "description": "Proje ilerlemesini ve hedeflerini kontrol edin! (Her saat başı güncellenir. TÜM proje hedeflerini veya ilerlemesini yansıtmaz)" - }, - "blogPage": { - "title": "Blog", - "description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on Patreon." - }, - "localizationPage": { - "title": "Let's localize", - "description": "Paste a link to a publicly accessible JSON locale to test it on the website", - "instructions": "View localization instructions", - "fileInput": "File to test", - "filePlaceholder": "https://a.link.to/the_file.json", - "button": "Test file" - }, - "docs": { - "missingInLocale": "This page is unavailable in your locale. Please check the English version below.", - "quickLinks": { - "header": "Quick links", - "links": [ - { - "header": "Install Pretendo", - "caption": "View the setup instructions" - }, - { - "header": "Got an error?", - "caption": "Search for it here" - } - ] - } - } -} diff --git a/locales/ar_AR.json b/locales/ar_AR.json new file mode 100644 index 0000000..0f40d7f --- /dev/null +++ b/locales/ar_AR.json @@ -0,0 +1,332 @@ +{ + "nav": { + "about": "عنا", + "faq": "أسئلة", + "docs": "دليل", + "credits": "الفريق", + "progress": "التقدم", + "blog": "البلوج", + "account": "حساب", + "accountWidget": { + "settings": "إعدادات", + "logout": "تسجيل الخروج" + } + }, + "hero": { + "subtitle": "سيرفرات الألعاب", + "title": "إعادة إنشاء", + "text": "إن بريتندو بديل مجاني و مصدر مفتوح لسيرفرات ال3دي اس و الوي يو ,يسمح بالاتصال عبر الإنترنت حتي بعد إغلاق السيرفرات الأصلية", + "buttons": { + "readMore": "أقرأ اكثر" + } + }, + "aboutUs": { + "title": "معلومات عنا", + "paragraphs": [ + "إن بريتندو مشروع مصدر مفتوح هدفه إعادة إنشاء شبكة نينتندو لل3دي اس و الوي يو عن طريق الهندسة العكسية.", + "خدماتنا ستكون مجاناً ومصدرها مفتوح، فستعيش وقتا طويلاً حتي بعد إغلاق شبكة نينتندو." + ] + }, + "progress": { + "title": "تقدم", + "paragraphs": [ + null, + "و نعمل علي ماريوكارت 7 لل3دي اس و نريد ان نعمل علي الألعاب الآخري في اسرع وقت" + ], + "githubRepo": "ريبو الجيتهب" + }, + "faq": { + "title": "بعض الأسئلة المكررة", + "text": "هنا بعض الأسئلة المتكررة بإجابتها للحصول على معلومات سهلة.", + "QAs": [ + { + "question": "ما هو بريتندو؟", + "answer": "إن بريتندو مصدر مفتوح بديل عن شبكة نينتندو هدفها إنشاء سيرفرات لعائلة ال3 دي اس و الوي يو. هدفنا الحفاظ علي الاجزاء الاونلاين و لجعل اللاعبين يستمتعون باقصي حد." + }, + { + "question": "هل هويتي الشخصية علي شبكة نينتندو ستستمر علي بريتندو؟", + "answer": "للأسف، لا. اي الهويات الشخصية لشبكة نينتندو لن تعمل علي بريتندو لأن نينتندو لديم المعلومات الشخصية؛ و من الرغم من أن هجرة الهوية الشخصية من شبكة نينتندو إلي بريتندو ممكنة إلا انها لها خطر و لا نريد أن يكون معنا المعلومات الشخصية." + }, + { + "question": "كيف استخدم بريتندو؟", + "answer": "إن بريتندو ليس جاهز للاستخدام العام ولكن عندما يكون جاهزا ستسطيع أن نسخدمه من خلال الهومبرو باتشر." + }, + { + "question": "هل تعرف متي تكون خدمة او خاصية جاهزة؟", + "answer": "لا، معظم خدمات بريتندو يتم إنشائها مفردة إي شخص قد يعمل علي الميفيرز و شخصاً أخر قد يعمل علي الاصدقاء و الاكونتات فلا نستطيع أن نعرف متي ستكون جاهزة." + }, + { + "question": "هل بريتندو يعمل علي سيمو و المحاكيات؟", + "answer": "إن بريتندو مصمم لل3 دي اس و الوي يو؛ و في الوقت الحالي سيمو هو المحاكية الوحيد يدعِم شبكة نينتندو. سي مو لا يدعم شبكة بريتندو مباشرا و لكن ستصتطتيع استخدامه (حالياً سيمو لا يدعم شبكة بريتندو)إن بريتندو مصمم لل3 دي اس و الوي يو؛ و في الوقت الحالي سيمو هو المحاكية الوحيد يدعِم شبكة نينتندو سي مد لا يدعم شبكة بريتندو مباشرا و لكن ستصتيع استخدامه (حالياً سيمو لا يدعم شبكة بريتندو)." + }, + { + "question": "لو اتمنعنت من شبكة بريتندو هل سأستمتر ممتنع من بريتندو؟", + "answer": "لا، جميع المستخدمين لن يكونوا محرمين و لكن يجب أن تمشي وراء القوانين او سيتمامتناعك." + }, + { + "question": "هل سيدعم بريتندو الوى و السوتش؟", + "answer": "الوي لديها سيرفرات مخصصة من ويميفاي. و ليس لدينا الهدف للسويتش بسبب اختلافها عن شبكة نينتندو." + }, + { + "question": "هل احتاج أن اهكر حتي اتصل؟", + "answer": "نعم، ستحتاج إلي تهكير جهازك لكن علي الوي يو تحتاج فقط إلي الهومبرو لانشر اي هاكسي او موخا اما علي ال3 دي اس سيتم الاعلان في وقتا لاحقاً." + } + ] + }, + "credits": { + "title": "الفريق", + "text": "قابل الفريق وراء المشروع", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "caption": "مالك المشروع والمطور الرئيسي", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "name": "Jemma (CaramelKat)", + "caption": "باحث و مطور الميفيرز", + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat" + }, + { + "name": "Rambo6Glaz", + "caption": "مثبت الشبكة و باحث الأجهزة", + "picture": "https://github.com/Rambo6Glaz.png", + "github": "https://github.com/Rambo6Glaz" + }, + { + "name": "quarky", + "caption": "مباحث البوس و مبرمج التصحيحات", + "picture": "https://github.com/QuarkTheAwesome.png", + "github": "https://github.com/QuarkTheAwesome" + }, + { + "name": "SuperMarioDaBom", + "caption": "باحث الأجهزة", + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "name": "Jip Fr", + "caption": "مطور الويب والبحث المبكر للالمحل الإلكتروني", + "picture": "https://github.com/jipfr.png", + "github": "https://github.com/jipfr" + }, + { + "name": "monty", + "caption": "مطور الويب", + "picture": "https://github.com/ashmonty.png", + "github": "https://github.com/ashmonty" + }, + { + "name": "mrjvs", + "caption": "مصمم الويب", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + } + ] + }, + "specialThanks": { + "title": "شكرا خاصة", + "text": "من غيرهم، بريتندو لن نكن بشكلها.", + "people": [ + { + "name": "superwhiskers", + "caption": "مطور مكتبة كرانش", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "name": "Stary", + "caption": "مبرمج و مففك ال3 دي اس و نكس", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001" + }, + { + "name": "Billy", + "caption": "المحافظ", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss" + }, + { + "name": "Shutterbug2000", + "caption": "باحث ماريو كارت 7 و ال3 دي اس", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "name": "rverse", + "caption": "تبادل المعلومات الميفيرز", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, + { + "name": "Kinnay", + "special": "شكر خاص", + "caption": "باحث في هياكل بيانات نينتندو", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "أيقونات لمحرر المي وردود فعل زنكس", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "المساهمين على جيتهاب", + "caption": "الترجمة والمساهمات الأخرى", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] + }, + "progressPage": { + "title": "تقدمنا", + "description": "تحقق من تقدم المشروع والأهداف! (يتم تحديثه كل ساعة أو نحو ذلك ، ولا يعكس جميع أهداف المشروع أو تقدمه)" + }, + "blogPage": { + "title": "البلوج", + "description": "آخر التحديثات في أجزاء مكثفة. إذا كنت ترغب في رؤية المزيد من التحديثات المتكررة ، ففكر في دعمنا على Patreon .", + "published": "صادرة من", + "publishedOn": "نشرت في" + }, + "localizationPage": { + "title": "لنترجم", + "description": "الصق رابطا إلي لغة الزيسون يمكن الوصول إليها بشكل عام لاختبارها على موقع الويب", + "instructions": "اظهر خطوات الترجمة", + "fileInput": "ملف للتجربة", + "filePlaceholder": "https://a.link.to/the_file.json", + "button": "ملف الاختبار" + }, + "footer": { + "usefulLinks": "لنكات مفيدة", + "widget": { + "captions": [ + "تريد أن تبقى على اطلاع؟", + "انضم إلى سيرفرنا علي ديسكورد!" + ], + "button": "إنضم الآن!" + }, + "socials": "مواقع الاتصال" + }, + "discordJoin": { + "text": "انضم إلى سيرفرنا علي ديسكورد للحصول على آخر التحديثات حول بريتندو.", + "widget": { + "text": "أحصل علي آخر التحديثات", + "button": "إنضم إلي سيرفرنا" + }, + "title": "ابق على إطلاع" + }, + "account": { + "settings": { + "downloadFilesDescription": "(لن يعمل على شبكة نينتندو)", + "downloadFiles": "تحميل ملفات الحساب", + "settingCards": { + "profile": "الملف الشخصي", + "nickname": "لقب", + "birthDate": "تاريخ الميلاد", + "gender": "الجنس", + "country": "البلد/المنطقة", + "timezone": "المنطقة الزمنية", + "serverEnv": "بيئة السيرفر", + "production": "الإنتاج", + "beta": "بيتا", + "upgradePrompt": "سيرفرات بيتا حصرية لمختبري الإصدارات التجريبية.
لتصبح أحد مختبري الإصدار بيتا ، قم بالترقية إلى مستوى حساب أعلى.", + "hasAccessPrompt": "تمنحك الطبقة الحالية إمكانية الوصول إلى سيرفرات بيتا. رائع!", + "signInSecurity": "تسجيل الدخول والأمان", + "email": "البريد الإلكتروني", + "password": "كلمة السر", + "passwordResetNotice": "بعد تغيير كلمة المرور الخاصة بك ، سيتم تسجيل خروجك من جميع الأجهزة.", + "signInHistory": "سجل تسجيل الدخول", + "fullSignInHistory": "عرض سجل تسجيل الدخول الكامل", + "otherSettings": "إعدادات أخرى", + "discord": "ديسكورد", + "connectedToDiscord": "متصل الديسكورد ب", + "removeDiscord": "إزالة حساب الديسكورد", + "noDiscordLinked": "لا يوجد حساب ديسكورد متصل.", + "linkDiscord": "توصيل حساب ديسكورد", + "newsletter": "الرسالة الإخبارية", + "newsletterPrompt": "تلقي تحديثات المشروع عبر البريد الإلكتروني (يمكنك إلغاء الاشتراك في أي وقت)", + "passwordPrompt": "أدخل كلمة مرور حسابك البريتندو و لتنزيل ملفات سيمو" + }, + "upgrade": "رفع مستوى الحساب" + }, + "banned": "محظور", + "loginForm": { + "login": "تسجيل الدخول", + "register": "سجل", + "password": "كلمة السر", + "email": "البريد الإلكتروني", + "detailsPrompt": "أدخل تفاصيل حسابك أدناه", + "username": "اسم المستخدم", + "forgotPassword": "نسيت كلمة سرك؟", + "loginPrompt": "هل لديك حساب؟", + "confirmPassword": "تأكيد كلمة المرور", + "registerPrompt": "ليس لديك حساب؟", + "miiName": "اسم المي" + }, + "accountLevel": [ + "اساسي", + "مختبر", + "مشرف", + "مطور" + ] + }, + "upgrade": { + "unsubPrompt": "هل أنت متأكد من أنك تريد إلغاء الاشتراك من tiername؟ ستفقد الوصول إلى الامتيازات المرتبطة بهذه الطبقة.", + "changeTierPrompt": "هل أنت متأكد من رغبتك في إلغاء الاشتراك من oldtiername والاشتراك في newtiername؟", + "title": "ترقيه", + "description": "إن الوصول إلى الهدف الشهري سيجعل بريتندو وظيفة بدوام كامل ، مما يوفر تحديثات ذات جودة أفضل بمعدل أسرع.", + "month": "شهر", + "tierSelectPrompt": "حدد فئة", + "unsub": "إلغاء الاشتراك", + "unsubConfirm": "إلغاء الاشتراك", + "changeTier": "تغيير الطبقة", + "changeTierConfirm": "تغيير الطبقة", + "back": "العودة" + }, + "docs": { + "missingInLocale": "هذه الصفحة غير متوفرة في الإعدادات المحلية. يرجى التحقق من النسخة الإنجليزية أدناه.", + "quickLinks": { + "header": "روابط سريعة", + "links": [ + { + "header": "تحميل بريتندو", + "caption": "عرض إرشادات الإعداد" + }, + { + "header": "هل لديك خطأ؟", + "caption": "ابحث عنه هنا" + } + ] + } + }, + "donation": { + "upgradePush": "لتصبح مشتركا والوصول إلى الامتيازات الرائعة ، تفضل بزيارة صفحة upgrade.", + "progress": " $$ {totd} من $$ {goald} / شهريًا ، $ {perc}٪ من الهدف الشهري." + }, + "showcase": { + "title": "ماذا نقوم به", + "cards": [ + { + "title": "سيرفرات ألعاب", + "caption": "إعادة إحياء ألعابك المفضلة و محتوياتها بإستخدام سيرفرات مخصصة." + }, + { + "title": "زونكسابوسيشن", + "caption": "إعادة تخيل الميفيرز، كما لو كانت مصنوعة في العصر الحديث." + }, + { + "title": "دعم سيمو", + "caption": "إلعب افضل ألعاب الوي يو من دون جهاز!" + } + ], + "text": "يحتوي مشروعنا على العديد من المكونات. هنا بعض منهم." + }, + "modals": { + "cancel": "إلغاء", + "confirm": "تأكيد" + } +} diff --git a/locales/DE_de.json b/locales/de_DE.json similarity index 50% rename from locales/DE_de.json rename to locales/de_DE.json index 98365fb..cc69511 100644 --- a/locales/DE_de.json +++ b/locales/de_DE.json @@ -1,17 +1,21 @@ { "nav": { - "about": "Über", + "about": "Über uns", "faq": "FAQ", "docs": "Docs", "credits": "Mitwirkende", "progress": "Fortschritt", "blog": "Blog", - "account": "Account" + "account": "Account", + "accountWidget": { + "settings": "Einstellungen", + "logout": "Abmelden" + } }, "hero": { "subtitle": "Spiel-Server", "title": "Rekonstruiert", - "text": "Pretendo ist ein kostenloser, Open-Source-Ersatz für Nintendo-Server für den 3DS and die Wii U, der die Onlineverbindung für alle, auch nach der offiziellen Einstellung des NNs, ermöglicht.", + "text": "Pretendo ist ein kostenloser, Open-Source-Ersatz für Nintendo-Server für den 3DS and die Wii U, der die Onlineverbindung für alle, auch nach der offiziellen Einstellung des NNs, ermöglicht", "buttons": { "readMore": "Mehr lesen" } @@ -20,19 +24,16 @@ "title": "Über uns", "paragraphs": [ "Pretendo ist ein Open-Source-Projekt, welches das Nintendo Network für den 3DS und die Wii U durch Clean-Room-Reverse-Engineering rekonstruiert.", - "Da unsere Dienste kostenlos und Open-Source sind, können diese auch nach der offiziellen Schließung des Nintendo Networks weiterexistieren." + "Da unsere Dienste kostenlos und Open-Source sind, können diese auch nach der offiziellen Schließung des Nintendo Networks weiter existieren." ] }, "progress": { "title": "Fortschritt", - "paragraphs": [ - "Aktuell arbeiten wir am Miiverse, unseren Account-Servern und deren Integration mit den Diensten.", - "Für den 3DS arbeiten wir nebenbei auch an Mario Kart 7, mit dem Wunsch, nach Möglichkeit auch an anderen Spielen zu arbeiten." - ] + "githubRepo": "Github-Repository" }, "faq": { "title": "Frequently Asked Questions (Häufig gestellte Fragen)", - "text": "Hier sind einige Fragen, die wir oft gestellt bekommen, zur schnellen Informationsbeschaffung.", + "text": "Hier sind einige Fragen, die wir häufiger gestellt bekommen, zur schnellen Informationsbeschaffung.", "QAs": [ { "question": "Was ist Pretendo?", @@ -47,16 +48,16 @@ "answer": "Pretendo ist aktuell nicht für die öffentliche Nutzung verfügbar. Sobald das Pretendo Network bereit ist, kannst du es einfach durch unseren Homebrew-Patcher auf deiner Konsole nutzen." }, { - "question": "Weißt du, wann bereit ist?", - "answer": "Nein. Viele von Funktionen und Diensten von Pretendo werden unabhängig voneinander entwickelt (z. B., ein Entwickler arbeitet am Miiverse während ein anderer an Accounts und der Freundesliste arbeitet) und deshalb können wir keine Angaben zur jeweiligen Fertigstellung machen." + "question": "Weißt du, wann Funktion/Dienst bereit ist?", + "answer": "Nein. Viele der Funktionen und Dienste von Pretendo werden unabhängig voneinander entwickelt (z. B., ein Entwickler arbeitet am Miiverse während ein anderer an Accounts und der Freundesliste arbeitet), deshalb können wir keine genauen Angaben zur jeweiligen Fertigstellung machen." }, { "question": "Funktioniert Pretendo mit CEMU, oder anderen Emulatoren?", - "answer": "Pretendo wird hauptsächlich für die Hardware der Wii U und des 3DS entwickelt. Zu diesem Zeitpunkt ist CEMU der einzige Emulator für diese Konsolen mit NN support. CEMU selbst unterstützt keine eigenen Server, aber es soll trotzdem möglich sein Pretendo mit CEMU zu verwenden.
CEMU wird aktuell von Pretendo nicht unterstützt." + "answer": "Pretendo wird hauptsächlich für die Hardware der Wii U und des 3DS entwickelt. Zu diesem Zeitpunkt ist CEMU der einzige Emulator für diese Konsolen mit NN Unterstützung. CEMU selbst unterstützt keine eigenen Server, aber es soll trotzdem möglich sein Pretendo mit CEMU zu verwenden.
CEMU wird aktuell von Pretendo nicht unterstützt." }, { - "question": "Wenn ich im Nintendo Network gebannt wurde, bleibe ich in Pretendo auch gebannt?", - "answer": "Wir werden keinen Zugriff auf Nintendos Bannliste haben, weshalt kein Nutzer auf unserem Netzwerk gebannt sein wird. Trotzdem, wir haben Regeln für die Nutzung unserer Dienste und das Nichteinhalten kann in einem Bann resultieren." + "question": "Wenn ich im Nintendo Network gebannt wurde, bin ich dann in Pretendo auch gebannt?", + "answer": "Wir werden keinen Zugriff auf Nintendos Bannliste haben, weshalb kein Nutzer auf unserem Netzwerk gebannt sein wird. Trotzdem, wir haben Regeln für die Nutzung unserer Dienste und die Nichteinhaltung dieser kann zu einem Bann führen." }, { "question": "Wird Pretendo die Wii/Switch unterstützen?", @@ -64,32 +65,31 @@ }, { "question": "Benötige ich einen Hack um Pretendo zu verwenden?", - "answer": "Ja, du musst deine Konsole hacken, allerdings reicht auf der Wii U den Zugriff zum Homebrew-Launcher (z.B. über Haxchi, CBHC, oder den Browser-Exploit). Informationen, wie der 3DS verbunden wird, wird später noch veröffentlicht." + "answer": "Ja, du musst deine Konsole hacken, allerdings reicht auf der Wii U den Zugriff zum Homebrew-Launcher (z.B. über Haxchi, CBHC, oder den Browser-Exploit). Informationen, wie der 3DS verbunden wird, werden später noch veröffentlicht." } ] }, "showcase": { - "title": "What we make", - "text": "Our project has many components. Here are some of them.", + "title": "Was wir machen", + "text": "Unser Projekt hat viele Komponenten, hier sind einige davon.", "cards": [ { - "title": "Game servers", - "caption": "Bringing back your favorite games and content using custom servers." + "title": "Spiele Server", + "caption": "Bringt dir deine Lieblingsspiele und Inhale zurück, mithilfe eigener Server." }, { "title": "Juxtaposition", - "caption": "A re-imagining of Miiverse, as if it were made in the modern era." + "caption": "Eine Neuinterpretation des Miiverse, als ob es im modernen Zeitalter entwickelt wurde." }, { - "title": "Cemu support", - "caption": "Play your favorite Wii U titles even without a console!" + "title": "Cemu Unterstützung", + "caption": "Spiele deine Lieblings WII U Spiele sogar ohne eine Konsole!" } - ] }, "credits": { "title": "Das Team", - "text": "Triff das Team, das hinter dem Projekt steckt", + "text": "Triff das Team hinter dem Projekt", "people": [ { "name": "Jonathan Barrow (jonbarrow)", @@ -142,7 +142,7 @@ ] }, "specialThanks": { - "title": "Special thanks", + "title": "Besonderer Dank", "text": "Ohne sie, wäre Pretendo nicht, wo es heute ist.", "people": [ { @@ -169,6 +169,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse Informationsaustausch", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Besonderer Dank", @@ -178,67 +184,145 @@ }, { "name": "NinStar", - "caption": "Icons for the Mii Editor and Juxt reactions", + "caption": "Icons für den Mii Editor und Juxt Reaktionen", "picture": "https://github.com/ninstar.png", "github": "https://github.com/ninstar" }, { - "name": "GitHub contributors", - "caption": "Localizations and other contributions", + "name": "GitHub-Mitwirkende", + "caption": "Übersetzungen und andere Beiträge", "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", "github": "https://github.com/PretendoNetwork" } ] }, "discordJoin": { - "title": "Stay up to date", - "text": "Join our Discord server to get the latest updates on the project.", + "title": "Bleib auf dem Laufenden", + "text": "Tritt unserem Discord Server bei um die neuesten Updates des Projektes zu erhalten.", "widget": { - "text": "Get realtime updates to our progress", - "button": "Join the server" + "text": "Erhalte Echtzeit informationen über unseren Fortschritt", + "button": "Tritt dem Server bei" } }, "footer": { - "socials": "Socials", - "usefulLinks": "Useful links", + "socials": "Soziale Medien", + "usefulLinks": "Nützliche Links", "widget": { "captions": [ - "Want to keep updated?", - "Join our Discord server!" + "Du möchtest auf dem Laufenden bleiben?", + "Tritt dem Discord server bei!" ], - "button": "Join now!" + "button": "Tritt noch heute bei!" } }, "progressPage": { "title": "Unser Fortschritt", - "description": "Prüfe den Projektfortschritt und die Ziele! (Es wird stündlich aktualisiert, reflektiert nicht ALLE Projekte oder Ziele)" + "description": "Prüfe den Projektfortschritt und die Ziele! (Wird stündlich aktualisiert, reflektiert nicht ALLE Projekte oder Ziele)" }, "blogPage": { "title": "Blog", - "description": "Die letzten Updates in Kurzform. Wenn du Updates häufiger einsehen möchtest, unterstütze uns doch bei Patreon." + "description": "Die letzten Updates in Kurzform. Wenn du Updates häufiger einsehen möchtest, unterstütze uns doch bei Patreon.", + "published": "Veröffentlicht von", + "publishedOn": "am" + }, + "account": { + "accountLevel": [ + "Standard", + "Tester", + "Moderator", + "Entwickler" + ], + "loginForm": { + "login": "Anmelden", + "detailsPrompt": "Gib deine Accountdaten unten ein", + "register": "Registrieren", + "username": "Benutzername", + "password": "Passwort", + "confirmPassword": "Passwort bestätigen", + "email": "E-Mail", + "miiName": "Mii-Name", + "forgotPassword": "Passwort vergessen?", + "registerPrompt": "Du hast noch keinen Account?", + "loginPrompt": "Du hast schon einen Account?" + }, + "settings": { + "settingCards": { + "profile": "Profil", + "nickname": "Spitzname", + "birthDate": "Geburtsdatum", + "gender": "Geschlecht", + "country": "Land/Region", + "timezone": "Zeitzone", + "production": "Produktion", + "upgradePrompt": "Beta-Server sind exklusiv für Beta-Tester.
Um Beta-Tester zu werden, musst du ein Upgrade auf eine höhere Account-Stufe durchführen.", + "signInSecurity": "Anmeldung und Sicherheit", + "signInHistory": "Anmeldeverlauf", + "fullSignInHistory": "Vollständigen Anmeldeverlauf anzeigen", + "otherSettings": "Andere Einstellungen", + "discord": "Discord", + "connectedToDiscord": "Verbunden mit Discord als", + "linkDiscord": "Discord-Konto verknüpfen", + "newsletter": "Newsletter", + "newsletterPrompt": "Erhalt von Projektinformationen per E-Mail (Du kannst den Newsletter jederzeit abbestellen)", + "passwordPrompt": "Gib dein PNID-Passwort ein, um Cemu-Dateien herunterzuladen", + "hasAccessPrompt": "Mit deiner aktuellen Stufe hast du Zugang zu den Beta-Servern. Cool!", + "noDiscordLinked": "Kein Discord-Konto verknüpft.", + "serverEnv": "Server-Umgebung", + "beta": "Beta", + "email": "E-Mail", + "password": "Passwort", + "passwordResetNotice": "Nachdem du dein Passwort geändert hast, wirst du von allen Geräten abgemeldet.", + "removeDiscord": "Discord-Konto entfernen" + }, + "downloadFiles": "Account-Dateien herunterladen", + "downloadFilesDescription": "(funktioniert nicht im Nintendo Network)", + "upgrade": "Konto upgraden" + }, + "banned": "Gebannt" + }, + "upgrade": { + "title": "Upgrade", + "description": "Das Erreichen des monatlichen Ziels wird aus Pretendo eine Vollzeitbeschäftigung machen, die qualitativ bessere und schnellere Updates liefert.", + "month": "Monat", + "tierSelectPrompt": "Wähle eine Stufe", + "unsub": "Deabonnieren", + "unsubPrompt": "Bist du dir sicher, dass du tiername deabonnieren möchtest? Du wirst den Zugang zu den Vorteilen verlieren, die mit dieser Stufe verbunden sind.", + "unsubConfirm": "Deabonnieren", + "changeTier": "Stufe ändern", + "changeTierPrompt": "Bist du dir sicher, dass du oldtiername deabonnieren und newtiername abonnieren möchtest?", + "back": "Zurück", + "changeTierConfirm": "Stufe ändern" + }, + "donation": { + "progress": "$${totd} von $${goald}/Monat, ${perc}% des monatlichen Ziels.", + "upgradePush": "Um Abonnent zu werden und Zugang zu coolen Vorteilen zu erhalten, besuche die Upgrade-Seite." }, "localizationPage": { - "title": "Let's localize", - "description": "Paste a link to a publicly accessible JSON locale to test it on the website", - "instructions": "View localization instructions", - "fileInput": "File to test", - "filePlaceholder": "https://a.link.to/the_file.json", - "button": "Test file" + "description": "Füge einen Link zu einem öffentlich zugänglichen JSON-Locale ein, um es auf der Website zu testen", + "filePlaceholder": "https://ein.link.zu/der_datei.json", + "button": "Test-Datei", + "title": "Lass uns lokalisieren", + "instructions": "Anweisungen zur Lokalisierung anzeigen", + "fileInput": "Zu testende Datei" }, "docs": { - "missingInLocale": "This page is unavailable in your locale. Please check the English version below.", + "missingInLocale": "Diese Seite ist in deinem Land nicht verfügbar. Bitte schau dir die englische Version unten an.", "quickLinks": { - "header": "Quick links", + "header": "Schnelle Links", "links": [ { - "header": "Install Pretendo", - "caption": "View the setup instructions" + "header": "Pretendo installieren", + "caption": "Einrichtungsanweisungen anzeigen" }, { - "header": "Got an error?", - "caption": "Search for it here" + "header": "Hast du einen Fehler?", + "caption": "Suche nach diesem hier" } ] } + }, + "modals": { + "cancel": "Abbrechen", + "confirm": "Bestätigen" } } diff --git a/locales/US_en.json b/locales/en_US.json similarity index 62% rename from locales/US_en.json rename to locales/en_US.json index 299c66d..1824f8b 100644 --- a/locales/US_en.json +++ b/locales/en_US.json @@ -6,7 +6,11 @@ "credits": "Credits", "progress": "Progress", "blog": "Blog", - "account": "Account" + "account": "Account", + "accountWidget": { + "settings": "Settings", + "logout": "Logout" + } }, "hero": { "subtitle": "Game servers", @@ -25,10 +29,7 @@ }, "progress": { "title": "Progress", - "paragraphs": [ - "Currently, we are working on Miiverse, along with our account servers and its integration with the services.", - "For 3DS, we are also working on Mario Kart 7, with a desire to continue working on other games when possible." - ] + "githubRepo": "Github repository" }, "faq": { "title": "Frequently Asked Questions", @@ -47,7 +48,7 @@ "answer": "Pretendo is currently not in a state that is ready for public use. However, once it is you will be able to use Pretendo simply by running our homebrew patcher on your console." }, { - "question": "Do you know when will be ready?", + "question": "Do you know when feature/service will be ready?", "answer": "No. Lots of Pretendo's features/services are developed independently (for example, Miiverse may be worked on by one developer while Accounts and Friends is being worked on by another) and therefore we cannot give an overall ETA for how long this will take." }, { @@ -84,7 +85,6 @@ "title": "Cemu support", "caption": "Play your favorite Wii U titles even without a console!" } - ] }, "credits": { @@ -169,6 +169,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Special thanks", @@ -207,7 +213,18 @@ "Join our Discord server!" ], "button": "Join now!" - } + }, + "bandwidthRaccoonQuotes": [ + "I'm Bandwidth the Raccoon, and I love biting the cables going into Pretendo Network's servers. Yum!", + "Many people ask us if we're gonna get in legal trouble with Nintendo over this; I am happy to say that my aunt works at Nintendo and she says it's fine.", + "Webkit v537 is the best version of Webkit for Wii U. No, we're not going to port Chrome to the Wii U.", + "I can't wait for the clock to reach 03:14:08 UTC on the 19th of January 2038!", + "The Wii U is actually an underrated system: the commercials were like really bad, but the console is great. Huh, wait a second, I'm not sure why but my Gamepad isn't connecting to my Wii.", + "Super Mario World 2 - Yoshi's Island's main theme is an absolute bop and there's no way you're gonna convince me otherwise.", + "My favorite Nintendo Switch releases have been Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Yet Another Port Pack, and Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \"You Really Liked The Nintendo Wii U Virtual Console Title, So We're Bringing It Back\" Pack. You can really tell Nintendo cares.", + "Like \"You know Ash, bless her heart, she UwU’s all day\" is the southern nice way of saying \"Ash uwus all the time and it’s really weird and stupid and I wish they didn't\"", + "My first video on my channel!! iv been wanting to make videos for a long time now but my laptop ran pretty bad and i couldn't run fraps, skype and minecraft all at once. but now thats over! with some help from my IT teacher my laptop runs alot better and i can record now! i hope y'all enjoy and if you do please like and subscribe!!!" + ] }, "progressPage": { "title": "Our progress", @@ -215,7 +232,81 @@ }, "blogPage": { "title": "Blog", - "description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on Patreon." + "description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on Patreon.", + "published": "Published by", + "publishedOn": "on" + }, + "account": { + "loginForm": { + "login": "Login", + "register": "Register", + "detailsPrompt": "Enter your account details below", + "username": "Username", + "password": "Password", + "confirmPassword": "Confirm password", + "email": "Email", + "miiName": "Mii name", + "forgotPassword": "Forgot your password?", + "registerPrompt": "Don't have an account?", + "loginPrompt": "Already have an account?" + }, + "settings": { + "downloadFiles": "Download account files", + "downloadFilesDescription": "(will not work on Nintendo Network)", + "upgrade": "Upgrade account", + "settingCards": { + "profile": "Profile", + "nickname": "Nickname", + "birthDate": "Birth date", + "gender": "Gender", + "country": "Country/region", + "timezone": "Timezone", + "serverEnv": "Server environment", + "production": "Production", + "beta": "Beta", + "upgradePrompt": "Beta servers are exclusive to beta testers.
To become a beta tester, upgrade to a higher account tier.", + "hasAccessPrompt": "Your current tier gives you beta server access. Cool!", + "signInSecurity": "Sign in and security", + "email": "Email", + "password": "Password", + "passwordResetNotice": "After changing your password, you will be signed out from all devices.", + "signInHistory": "Sign in history", + "fullSignInHistory": "View full sign in history", + "otherSettings": "Other settings", + "discord": "Discord", + "connectedToDiscord": "Connected to Discord as", + "removeDiscord": "Remove Discord account", + "noDiscordLinked": "No Discord account linked.", + "linkDiscord": "Link Discord account", + "newsletter": "Newsletter", + "newsletterPrompt": "Receive project updates via email (you can opt-out at any time)", + "passwordPrompt": "Enter your PNID password to download Cemu files" + } + }, + "accountLevel": [ + "Standard", + "Tester", + "Moderator", + "Developer" + ], + "banned": "Banned" + }, + "upgrade": { + "title": "Upgrade", + "description": "Reaching the monthly goal will make Pretendo a full time job, providing better quality updates at a faster rate.", + "month": "month", + "tierSelectPrompt": "Select a tier", + "unsub": "Unsubscribe", + "unsubPrompt": "Are you sure you want to unsubscribe from tiername? You will lose access to the perks associated with that tier.", + "unsubConfirm": "Unsubscribe", + "changeTier": "Change tier", + "changeTierPrompt": "Are you sure you want to unsubscribe from oldtiername and subscribe to newtiername?", + "changeTierConfirm": "Change tier", + "back": "Back" + }, + "donation": { + "progress": "$${totd} of $${goald}/month, ${perc}% of the monthly goal.", + "upgradePush": "To become a subscriber and gain access to cool perks, visit the upgrade page." }, "localizationPage": { "title": "Let's localize", @@ -240,5 +331,9 @@ } ] } + }, + "modals": { + "cancel": "Cancel", + "confirm": "Confirm" } -} \ No newline at end of file +} diff --git a/locales/ES_es.json b/locales/es_ES.json similarity index 69% rename from locales/ES_es.json rename to locales/es_ES.json index 8211a2f..6c412ce 100644 --- a/locales/ES_es.json +++ b/locales/es_ES.json @@ -6,12 +6,16 @@ "credits": "Créditos", "progress": "Progreso", "blog": "Blog", - "account": "Cuenta" + "account": "Cuenta", + "accountWidget": { + "settings": "Ajustes", + "logout": "Cerrar Sesión" + } }, "hero": { "subtitle": "Servidores en línea", "title": "Recreados", - "text": "Pretendo es un reemplazamiento gratuito y de código abierto de los servidores de Nintendo para 3DS y Wii U que permite la comunicación en línea incluso después del cierre de los servidores oficiales.", + "text": "Pretendo es un reemplazamiento gratuito y de código abierto de los servidores de Nintendo para 3DS y Wii U que permite la comunicación en línea incluso después del cierre de los servidores oficiales", "buttons": { "readMore": "Leer más" } @@ -26,9 +30,10 @@ "progress": { "title": "Progreso", "paragraphs": [ - "Actualmente, estamos trabajando en Miiverse, junto con los servidores de cuentas y la integración con los servicios.", + null, "En 3DS también trabajamos en el soporte de Mario Kart 7, con el deseo de continuar trabajando en otros juegos en cuanto sea posible." - ] + ], + "githubRepo": "Repositorio de Github" }, "faq": { "title": "Preguntas frecuentes", @@ -47,7 +52,7 @@ "answer": "Pretendo no está actualmente en un estado adecuado para el uso público. Sin embargo, en cuanto esté listo podrás usar Pretendo simplemente cargando nuestro parcheador homebrew en tu consola." }, { - "question": "¿Sabéis cuándo estará listo/a?", + "question": "¿Sabéis cuándo determinada función/servicio estará listo/a?", "answer": "No. Muchos/as funciones/servicios de Pretendo son desarrolladas independientemente (por ejemplo, un desarrollador puede estar trabajando en Miiverse mientras otro se encarga de las Cuentas y los Amigos) y, por lo tanto, no podemos dar una ETA exacta de cuánto puede tardar en estar listo." }, { @@ -56,7 +61,7 @@ }, { "question": "Si estoy baneado en Nintendo Network, ¿seguiré baneado al usar Pretendo?", - "answer": "No tenemos acceso a los baneos de Nintendo Network motivo por el nadie estará baneado en nuestros servidores al principio. Sin embargo, tendremos reglas a seguir al acceder a nuestros servicios y no hacerlo resultará en un baneo." + "answer": "No tenemos acceso a los baneos de Nintendo Network motivo por el nadie estará baneado en nuestros servidores al principio. Sin embargo, tendremos reglas a seguir al acceder a nuestros servicios y no hacerlo resultará en un baneo." }, { "question": "¿Pretendo soportará Wii/Switch?", @@ -84,7 +89,6 @@ "title": "Soporte para Cemu", "caption": "¡Juega a tus títulos de Wii U favoritos incluso sin una consola!" } - ] }, "credits": { @@ -169,6 +173,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Agradecimientos", @@ -215,7 +225,9 @@ }, "blogPage": { "title": "Blog", - "description": "Las últimas actualizaciones en pequeñas cantidades. Si quieres ver actualizaciones más frecuentes, considera apoyarnos en Patreon." + "description": "Las últimas actualizaciones en pequeñas cantidades. Si quieres ver actualizaciones más frecuentes, considera apoyarnos en Patreon.", + "published": "Publicado por", + "publishedOn": "en" }, "localizationPage": { "title": "Vamos a localizar", @@ -240,5 +252,81 @@ } ] } + }, + "account": { + "loginForm": { + "register": "Registrar", + "detailsPrompt": "Ingrese los datos de su cuenta a continuación", + "registerPrompt": "¿No tienes una cuenta?", + "password": "Contraseña", + "login": "Iniciar Sesión", + "email": "Correo electrónico", + "miiName": "Nombre de Mii", + "loginPrompt": "¿Ya tienes una cuenta?", + "confirmPassword": "Confirmar contraseña", + "forgotPassword": "¿Olvidaste tu contraseña?", + "username": "Nombre de usuario" + }, + "settings": { + "settingCards": { + "birthDate": "Fecha de nacimiento", + "profile": "Perfil", + "gender": "Sexo", + "country": "País", + "production": "Producción", + "timezone": "Zona horaria", + "serverEnv": "Entorno del servidor", + "beta": "Beta", + "hasAccessPrompt": "Tu rango actual tiene acceso a los servidores beta. Cool!", + "signInSecurity": "Inicio de sesión y seguridad", + "email": "Correo electrónico", + "password": "Contraseña", + "passwordResetNotice": "Después de cambiar tu contraseña, se cerrará la sesión de todos los dispositivos.", + "signInHistory": "Historial de inicio de sesión", + "fullSignInHistory": "Ver historial de inicio de sesión completo", + "otherSettings": "Otros ajustes", + "discord": "Discord", + "connectedToDiscord": "Conectado a discord como", + "removeDiscord": "Eliminar cuenta de Discord", + "noDiscordLinked": "No hay cuenta de Discord vinculada.", + "linkDiscord": "Vincular cuenta de Discord", + "newsletter": "Boletín", + "newsletterPrompt": "Reciba actualizaciones del proyecto por correo electrónico (puede optar por no participar en cualquier momento)", + "passwordPrompt": "Ingresa la contraseña de tu PNID para descargar los archivos de Cemu", + "nickname": "Apodo", + "upgradePrompt": "Los servidores beta son exclusivos para los beta testers.
Para convertirte en un beta tester, actualiza a un nivel de cuenta superior." + }, + "downloadFiles": "Descargar datos de cuenta", + "downloadFilesDescription": "(no funcionara en Nintendo Network)", + "upgrade": "Subir de rango" + }, + "accountLevel": [ + "Estándar", + "Tester", + "Moderador", + "Desarrollador" + ], + "banned": "Baneado" + }, + "upgrade": { + "description": "Alcanzar la meta mensual hará de Pretendo un trabajo de tiempo completo, brindando actualizaciones de mejor calidad a un ritmo más rápido.", + "month": "mes", + "tierSelectPrompt": "Selecciona un rango", + "unsub": "Cancelar suscripción", + "unsubPrompt": "¿Está seguro de que desea darse de baja de tiername? Perderá el acceso a las ventajas asociadas con ese nivel.", + "unsubConfirm": "Cancelar suscripción", + "changeTier": "Cambiar rango", + "changeTierPrompt": "¿Está seguro de que desea darse de baja de oldtiername y suscribirse a newtiername?", + "changeTierConfirm": "Cambiar rango", + "back": "Atrás", + "title": "Subir rango" + }, + "donation": { + "progress": "$${totd} de $${goald}/mes, ${perc}% del objetivo mensual.", + "upgradePush": "Para convertirse en suscriptor y obtener acceso a beneficios geniales, visite la página actualizar." + }, + "modals": { + "cancel": "Cancelar", + "confirm": "Confirmar" } } diff --git a/locales/FR_fr.json b/locales/fr_FR.json similarity index 58% rename from locales/FR_fr.json rename to locales/fr_FR.json index 4c27fac..487241a 100644 --- a/locales/FR_fr.json +++ b/locales/fr_FR.json @@ -2,16 +2,20 @@ "nav": { "about": "À propos", "faq": "FAQ", - "docs": "Docs", + "docs": "Documentation", "credits": "Crédits", "progress": "Progression", "blog": "Blog", - "account": "Compte" + "account": "Compte", + "accountWidget": { + "logout": "Déconnexion", + "settings": "Réglages" + } }, "hero": { - "subtitle": "Serveurs de jeu", + "subtitle": "Serveurs de jeux", "title": "Recréés", - "text": "Pretendo est un remplacement gratuit et open-source des serveurs Nintendo pour la 3DS et la Wii U permettant la connectivité en ligne pour tous, y compris après l'arrêt des serveurs officiels.", + "text": "Pretendo est une alternative gratuite et open source des serveurs Nintendo pour la 3DS et la Wii U permettant la connectivité en ligne pour tous, y compris après l'arrêt des serveurs officiels", "buttons": { "readMore": "En savoir plus" } @@ -19,16 +23,13 @@ "aboutUs": { "title": "À propos de nous", "paragraphs": [ - "Pretendo est un projet open-source qui vise à recréer le Nintendo Network pour la 3DS et la Wii U en utilisant la rétro-ingénierie.", - "Puisque nos services seront à la fois gratuits et open-source, ils pourront exister pendant longtemps après l'inévitable fermeture du Nintendo Network." + "Pretendo est un projet open source qui vise à recréer le Nintendo Network pour la 3DS et la Wii U en utilisant la rétro-ingénierie.", + "Puisque nos services seront à la fois gratuits et open source, ils pourront exister pendant longtemps après l'inévitable fermeture du Nintendo Network." ] }, "progress": { "title": "Progression", - "paragraphs": [ - "Actuellement, nous travaillons sur Miiverse, ainsi que sur nos serveurs de comptes et son intégration avec nos services.", - "Pour la 3DS, nous travaillons également sur Mario Kart 7, avec la volonté de continuer à travailler sur d'autres jeux dès que possible." - ] + "githubRepo": "Dépôt GitHub" }, "faq": { "title": "Foire Aux Questions", @@ -36,25 +37,23 @@ "QAs": [ { "question": "Qu'est-ce que Pretendo ?", - "answer": "Pretendo est un remplacement open-source du Nintendo Network qui vise à créer des serveurs personnalisés pour la famille des consoles Wii U et 3DS. Notre objectif est de préserver les fonctionnalités en ligne de ces consoles, afin de permettre aux joueurs de continuer à jouer à leurs jeux Wii U et 3DS favoris à leur plein potentiel." + "answer": "Pretendo est une alternative open source du service Nintendo Network qui vise à créer des serveurs personnalisés pour la famille des consoles Wii U et 3DS. Notre objectif est de préserver les fonctionnalités en ligne de ces consoles, afin de permettre aux joueurs de continuer à jouer à leurs jeux Wii U et 3DS favoris à leur plein potentiel." }, { "question": "Mes NNIDs existants fonctionneront-ils sur Pretendo ?", - "answer": "Malheuresement, non. Les NNIDs existants ne fonctionneront pas sur Pretendo car seul Nintendo détient vos données utilisateur. Bien qu'une migration de NNID à PNID soit théoriquement possible, elle serait risquée et nécessiterait des données personnelles sensibles que nous préférons ne pas stocker." - + "answer": "Malheureusement, non. Les NNIDs existants ne fonctionneront pas sur Pretendo car seul Nintendo détient vos données utilisateur. Bien qu'une migration des NNID aux PNID soit théoriquement possible, elle serait risquée et nécessiterait des données personnelles sensibles que nous préférons ne pas stocker." }, { "question": "Comment puis-je utiliser Pretendo ?", "answer": "Pretendo n'est actuellement pas dans un état prêt à être utilisé par le public. Cependant, dès qu'il le sera, vous pourrez utiliser Pretendo en exécutant simplement notre patcheur homebrew sur votre console." }, { - "question": "Savez-vous quand sera prêt ?", + "question": "Savez-vous quand fonctionnalité/service sera prêt ?", "answer": "Non. De nombreuses fonctionnalités/services de Pretendo sont développés indépendamment (par exemple, un développeur peut travailler sur Miiverse tandis qu'un autre travaille sur Comptes et Amis) et nous ne pouvons donc pas donner d'estimation exacte du temps qu'il faudra pour que tout soit prêt." - }, { "question": "Est-ce que Pretendo fonctionne sur Cemu/émulateurs ?", - "answer": "Pretendo est conçu pour la Wii U et la 3DS; pour le moment, le seul émulateur pour ces consoles qui supporte le NN est Cemu. Cemu ne prend pas officiellement en charge les serveurs personnalisés, mais il devrait tout de mêtre possible d'utiliser Pretendo avec Cemu.
Pretendo ne prend pas en charge Cemu actuellement." + "answer": "Pretendo est conçu pour la Wii U et la 3DS ; pour le moment, le seul émulateur pour ces consoles qui supporte le NN est Cemu. Cemu ne prend pas officiellement en charge les serveurs personnalisés, mais il devrait tout de mêtre possible d'utiliser Pretendo avec Cemu.
Pretendo ne prend pas en charge Cemu actuellement." }, { "question": "Si je suis banni du Nintendo Network, resterai-je banni lorsque j'utiliserai Pretendo ?", @@ -66,7 +65,7 @@ }, { "question": "Aurais-je besoin de modifier ma console pour me connecter ?", - "answer": "Oui, vous devrez modifier votre appareil afin de vous connecter; cependant sur Wii U un accès au Homebrew Launcher est suffisant (avec Haxchi, Coldboot Haxchi, ou même la faille du Navigateur Web). La démarche à suivre pour la 3DS sera fournie ultérieurement." + "answer": "Oui, vous devrez hack votre appareil afin de vous connecter ; cependant sur Wii U, un accès au Homebrew Launcher est suffisant (avec Haxchi, Coldboot Haxchi, ou même la faille du Navigateur Web). La démarche à suivre pour la 3DS sera fournie ultérieurement." } ] }, @@ -86,7 +85,6 @@ "title": "Support de Cemu", "caption": "Jouez à vos titres Wii U préférés même sans console !" } - ] }, "credits": { @@ -171,6 +169,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Partage d'information Miiverse", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Remerciement spéciaux", @@ -185,7 +189,7 @@ "github": "https://github.com/ninstar" }, { - "name": "GitHub contributors", + "name": "Contributeurs GitHub", "caption": "Localisations et autres contributions", "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", "github": "https://github.com/PretendoNetwork" @@ -213,11 +217,13 @@ }, "progressPage": { "title": "Notre progression", - "description": "Vérifiez l'avancement et les objectifs du projet ! (Mis à jour environ toute les heures, ne reflète pas TOUS nos objectifs et notre progression)." + "description": "Vérifiez l'avancement et les objectifs du projet ! (Mis à jour environ toute les heures, ne reflète pas TOUS nos objectifs et notre progression)" }, "blogPage": { "title": "Blog", - "description": "Les dernières mises à jour en blocs condensés. Si vous souhaitez voir des mises à jour plus fréquentes, envisagez de nous soutenir sur Patreon." + "description": "Les dernières mises à jour en blocs condensés. Si vous souhaitez voir des mises à jour plus fréquentes, envisagez de nous soutenir sur Patreon.", + "publishedOn": "le", + "published": "Publié par" }, "localizationPage": { "title": "Localisons", @@ -242,5 +248,81 @@ } ] } + }, + "account": { + "loginForm": { + "login": "Connexion", + "detailsPrompt": "Entrez les informations du compte ci-dessous", + "password": "Mot de Passe", + "loginPrompt": "Déjà un Compte ?", + "username": "Pseudo", + "register": "S'inscrire", + "confirmPassword": "Confirmez le Mot de Passe", + "email": "Email", + "miiName": "Nom du Mii", + "forgotPassword": "Mot de Passe oublié ?", + "registerPrompt": "Pas de Compte ?" + }, + "settings": { + "downloadFiles": "Télécharger fichiers du compte", + "settingCards": { + "gender": "Genre", + "profile": "Profil", + "nickname": "Surnom", + "birthDate": "Date de Naissance", + "country": "Pays/Région", + "timezone": "Décalage Horaire", + "serverEnv": "Environment du Serveur", + "production": "Production", + "beta": "Beta", + "upgradePrompt": "Les Serveurs Beta sont exclusifs au Beta Testeurs.
Pour devenir un Beta Testeur, mettez à niveau votre compte à un niveau plus élevé.", + "hasAccessPrompt": "Votre niveau actuel vous donne accès au serveurs beta. Super !", + "newsletterPrompt": "Recevoir les mises à jour via email (vous pourrez toujours changer ça plus tard)", + "signInSecurity": "Inscription et sécurité", + "email": "Email", + "password": "Mot de Passe", + "passwordResetNotice": "Une fois votre mot de passe changé, vous serez déconnecté de tous les appareils.", + "signInHistory": "Historique de Connexion", + "fullSignInHistory": "Voir l'historique de connexion complète", + "otherSettings": "Autres Paramètres", + "discord": "Discord", + "connectedToDiscord": "Connecté à Discord en tant que", + "removeDiscord": "Délier le compte Discord", + "noDiscordLinked": "Pas de compte Discord associé.", + "linkDiscord": "Associer un compte Discord", + "newsletter": "Newsletter", + "passwordPrompt": "Entrez votre mot de passe d'Identifiant Pretendo Network (PNID) pour télécharger les fichiers Cemu" + }, + "downloadFilesDescription": "(Ne fonctionnera pas avec le Nintendo Network)", + "upgrade": "Mettre à Niveau le compte" + }, + "banned": "Banni", + "accountLevel": [ + "Standard", + "Testeur", + "Modérateur", + "Développeur" + ] + }, + "upgrade": { + "title": "Mise à Niveau", + "changeTierPrompt": "Êtes-vous sûr de vouloir vous désabonner de oldertiername et vous abonner à newtiername ?", + "description": "Atteindre le but mensuel fera de Pretendo un travail complet, proposant des mises à jour de meilleures qualité à une plus grande vitesse.", + "month": "mois", + "tierSelectPrompt": "Sélectionnez un niveau", + "unsub": "Se désabonner", + "unsubPrompt": "Êtes-vous sûr de vouloir vous désabonner du tiername ? Vous perdrez toutes les récompenses associées à ce niveau.", + "unsubConfirm": "Se désabonner", + "changeTier": "Changer de niveau", + "changeTierConfirm": "Changer de niveau", + "back": "Retour" + }, + "donation": { + "upgradePush": "Pour s'abonner et avoir accès à des récompenses spéciales, visitez la page de mise à niveau.", + "progress": "$${totd} sur $${goald}/mois, ${perc}% du but mensuel." + }, + "modals": { + "cancel": "Annuler", + "confirm": "Confirmer" } } diff --git a/locales/it_IT.json b/locales/it_IT.json new file mode 100644 index 0000000..1f18a7f --- /dev/null +++ b/locales/it_IT.json @@ -0,0 +1,332 @@ +{ + "nav": { + "about": "Info", + "faq": "FAQ", + "docs": "Documentazione", + "credits": "Riconoscimenti", + "progress": "Progresso", + "blog": "Blog", + "account": "Account", + "accountWidget": { + "settings": "Impostazioni", + "logout": "Logout" + } + }, + "hero": { + "subtitle": "Server di gioco", + "title": "Ricreati", + "text": "Pretendo è un'alternativa gratuita e open source ai server Nintendo per 3DS e Wii U che permette la comunicazione online anche dopo la chiusura dei server ufficiali", + "buttons": { + "readMore": "Scopri di più" + } + }, + "aboutUs": { + "title": "Informazioni", + "paragraphs": [ + "Pretendo è un progetto open source con l'obiettivo di ricreare Nintendo Network per 3DS e Wii U utilizzando ingegneria inversa clean-room.", + "Visto che i nostri server saranno gratuiti e open source, essi potranno esistere anche dopo l'inevitabile chiusura di Nintendo Network." + ] + }, + "progress": { + "title": "Progresso", + "paragraphs": [ + null, + "Per la 3DS stiamo anche lavorando su Mario Kart 7, e vorremmo continuare a lavorare su altri giochi quando possibile." + ], + "githubRepo": "Repository GitHub" + }, + "faq": { + "title": "Domande frequenti", + "text": "Ecco alcune domande frequenti.", + "QAs": [ + { + "question": "Cos'è Pretendo?", + "answer": "Pretendo è un'alternativa open source a Nintendo Network con l'obiettivo di creare dei server custom per la famiglia di console 3DS e Wii U. Il nostro obiettivo è preservare le funzionalità online di queste console, in modo che i giocatori possano continuare a giocare ai loro giochi Wii U e 3DS preferiti al massimo delle loro potenzialità." + }, + { + "question": "I miei NNID esistenti funzioneranno su Pretendo?", + "answer": "Purtroppo, no. I NNID esistenti non funzioneranno su Pretendo, poiché solo Nintendo è in possesso dei tuoi dati utente; benché una migrazione da-NNID-a-PNID sia teoricamente possibile, sarebbe rischiosa e richiederebbe dati personali dell'utente che preferiremmo non avere." + }, + { + "question": "Come si usa Pretendo?", + "answer": "Pretendo non è ancora in uno stato tale da poter essere usata dal pubblico. Tuttavia, quando lo sarà potrai usare Pretendo semplicemente eseguendo il nostro patcher homebrew sulla tua console." + }, + { + "question": "Sapete quando una determinata funzionalità/servizio sarà pronta/o?", + "answer": "No. Molte delle funzionalità/servizi di Pretendo sono sviluppate indipendentemente (per esempio, uno sviluppatore potrebbe lavorare su Miiverse mentre un altro sta lavorando su Account e Amici) e per questo non possiamo fornire una stima del tempo mancante al completamento." + }, + { + "question": "Pretendo funziona su Cemu/emulatori?", + "answer": "Pretendo è sviluppata con l'hardware Wii U e 3DS in mente; in questo momento l'unico emulatore per queste console che supporta NN è Cemu. Cemu non supporta server custom ufficialmente, ma dovrebbe comunque essere possibile utilizzare Pretendo con Cemu .
Al momento Pretendo non supporta Cemu." + }, + { + "question": "Se sono bannato su Nintendo Network, rimarrò bannato quando userò Pretendo?", + "answer": "Noi non avremo accesso alla lista degli utenti bannati da Nintendo Network, quindi quegli utenti non saranno bannati sul nostro servizio. Ci saranno comunque regole da seguire mentre si usa il servizio, e il mancato rispetto di queste regole potrebbe portare a un ban." + }, + { + "question": "Pretendo supporterà la Wii/Switch?", + "answer": "La Wii dispone già di server custom forniti da Wiimmfi. Al momento non abbiamo intenzione di supportare la Switch poiché il suo servizio online è a pagamento e completamente diverso da Nintendo Network." + }, + { + "question": "Dovrò modificare la mia console per connettermi?", + "answer": "Sì, dovrai modificare il tuo dispositivo per connetterti; tuttavia, sulla Wii U è sufficiente poter accedere all'Homebrew Launcher (via Haxchi, Coldboot Haxchi, o anche solo l'exploit web per browser). Informazioni su come connettersi su 3DS saranno fornite in futuro." + } + ] + }, + "showcase": { + "title": "Ciò che facciamo", + "text": "Il nostro progetto è composto da diverse parti. Eccone alcune.", + "cards": [ + { + "title": "Server di gioco", + "caption": "Riportiamo in vita i tuoi giochi e contenuti preferiti usando server custom." + }, + { + "title": "Juxtaposition", + "caption": "Una versione reimmaginata di Miiverse, come se fosse stato creato nell'era moderna." + }, + { + "title": "Supporto per Cemu", + "caption": "Gioca ai tuoi titoli preferiti per Wii U anche senza avere una console!" + } + ] + }, + "credits": { + "title": "Il team", + "text": "Incontra il team dietro al progetto", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "caption": "Proprietario del progetto e sviluppatore principale", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "name": "Jemma (CaramelKat)", + "caption": "Ricerca e sviluppo Miiverse", + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat" + }, + { + "name": "Rambo6Glaz", + "caption": "Installer della rete e ricerca su console", + "picture": "https://github.com/Rambo6Glaz.png", + "github": "https://github.com/Rambo6Glaz" + }, + { + "name": "quarky", + "caption": "Ricerca BOSS e sviluppo patch", + "picture": "https://github.com/QuarkTheAwesome.png", + "github": "https://github.com/QuarkTheAwesome" + }, + { + "name": "SuperMarioDaBom", + "caption": "Ricerca su console e altri sistemi", + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "name": "Jip Fr", + "caption": "Leader dello sviluppo web", + "picture": "https://github.com/jipfr.png", + "github": "https://github.com/jipfr" + }, + { + "name": "monty", + "caption": "Sviluppo web", + "picture": "https://github.com/ashmonty.png", + "github": "https://github.com/ashmonty" + }, + { + "name": "mrjvs", + "caption": "Disegnatore", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + } + ] + }, + "specialThanks": { + "title": "Ringraziamenti speciali", + "text": "Senza di loro, Pretendo non sarebbe dove è oggi.", + "people": [ + { + "name": "superwhiskers", + "caption": "Sviluppo della libreria crunch", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "name": "Stary", + "caption": "Sviluppo 3DS e dissettore NEX", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001" + }, + { + "name": "Billy", + "caption": "Conservazionista", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss" + }, + { + "name": "Shutterbug2000", + "caption": "Ricerca su Mario Kart 7 e 3DS", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "name": "rverse", + "caption": "Condivisione di informazioni su Miiverse", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, + { + "name": "Kinnay", + "special": "Ringraziamenti speciali", + "caption": "Ricerca su strutture dati Nintendo", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Icone per l'editor Mii e le reazioni su Juxt", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "Contributori su GitHub", + "caption": "Localizzazioni e altre contribuzioni", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] + }, + "discordJoin": { + "title": "Tienti aggiornato", + "text": "Unisciti al nostro server su Discord per ottenere gli ultimi aggiornamenti sul progetto.", + "widget": { + "text": "Ricevi aggiornamenti in tempo reale sul nostro progresso", + "button": "Unisciti al server" + } + }, + "footer": { + "socials": "Social", + "usefulLinks": "Collegamenti utili", + "widget": { + "captions": [ + "Vuoi tenerti aggiornato?", + "Unisciti al nostro server su Discord!" + ], + "button": "Unisciti ora!" + } + }, + "progressPage": { + "title": "Il nostro progresso", + "description": "Controlla il progresso e gli obiettivi del progetto! (Aggiornato ogni ora circa, non riflette TUTTI i nostri obiettivi e il nostro progresso)" + }, + "blogPage": { + "title": "Blog", + "description": "Gli ultimi aggiornamenti in blocchi condensati. Se vuoi ricevere aggiornamenti più frequenti, considera di supportarci su Patreon.", + "published": "Pubblicato da", + "publishedOn": "il" + }, + "account": { + "accountLevel": [ + "Standard", + "Tester", + "Moderatore", + "Sviluppatore" + ], + "banned": "Bannato", + "loginForm": { + "username": "Nome utente", + "password": "Password", + "miiName": "Nome Mii", + "forgotPassword": "Hai dimenticato la password?", + "login": "Accedi", + "register": "Registrati", + "detailsPrompt": "Inserisci le informazioni del tuo account qui sotto", + "loginPrompt": "Hai già un account?", + "confirmPassword": "Conferma password", + "email": "Email", + "registerPrompt": "Non hai un account?" + }, + "settings": { + "downloadFilesDescription": "(non funzioneranno su Nintendo Network)", + "downloadFiles": "Scarica file dell'account", + "settingCards": { + "profile": "Profilo", + "nickname": "Nickname", + "birthDate": "Data di nascita", + "gender": "Genere", + "country": "Paese/regione", + "timezone": "Fuso orario", + "serverEnv": "Ambiente del server", + "production": "Produzione", + "beta": "Beta", + "upgradePrompt": "I server beta sono esclusivi per i beta tester.
Per diventare un beta tester, fai l'upgrade del tuo account a un livello più alto.", + "hasAccessPrompt": "Il tuo livello ti dà accesso ai server beta. Forte!", + "signInSecurity": "Accesso e sicurezza", + "email": "Email", + "password": "Password", + "passwordResetNotice": "Dopo aver cambiato la tua password, verrai disconnesso da tutti i tuoi dispositivi.", + "signInHistory": "Cronologia di accesso", + "fullSignInHistory": "Mostra cronologia di accesso completa", + "otherSettings": "Altre impostazioni", + "discord": "Discord", + "connectedToDiscord": "Connesso a Discord come", + "removeDiscord": "Rimuovi account Discord", + "noDiscordLinked": "Nessun account Discord collegato.", + "linkDiscord": "Collega account Discord", + "newsletter": "Newsletter", + "newsletterPrompt": "Ricevi aggiornamenti sul progetto via email (puoi annullare in qualunque momento)", + "passwordPrompt": "Inserisci la tua password PNID per scaricare i file per Cemu" + }, + "upgrade": "Fai l'upgrade del tuo account" + } + }, + "localizationPage": { + "title": "Localizziamo", + "description": "Incolla il link di una localizzazione in formato JSON accessibile al pubblico per testarla sul sito", + "instructions": "Vedi le istruzioni su come localizzare", + "fileInput": "File da testare", + "filePlaceholder": "https://il.link.di/un_file.json", + "button": "Testa file" + }, + "docs": { + "missingInLocale": "Questa pagina non è disponibile nella tua lingua. Per favore, controlla la versione in inglese sotto.", + "quickLinks": { + "header": "Collegamenti rapidi", + "links": [ + { + "header": "Installa Pretendo", + "caption": "Mostra le istruzioni di configurazione" + }, + { + "header": "Hai un errore?", + "caption": "Cercalo qui" + } + ] + } + }, + "upgrade": { + "unsubPrompt": "Sei sicuro di voler annullare l'iscrizione a tiername? Perderai tutte le ricompense associate a quel livello.", + "description": "Raggiungere il goal mensile renderà Pretendo un lavoro a tempo pieno, permettendo di fornire aggiornamenti di maggiore qualità in meno tempo.", + "month": "mese", + "tierSelectPrompt": "Seleziona un livello", + "unsub": "Annulla l'iscrizione", + "unsubConfirm": "Annulla l'iscrizione", + "changeTier": "Cambia livello", + "changeTierPrompt": "Sei sicuro di voler annullare l'iscrizione a oldtiername e iscriverti a newtiername?", + "changeTierConfirm": "Cambia livello", + "back": "Indietro", + "title": "Upgrade" + }, + "modals": { + "cancel": "Annulla", + "confirm": "Conferma" + }, + "donation": { + "progress": "$${totd} di $${goald}/mese, ${perc}% del goal mensile.", + "upgradePush": "Per diventare un abbonato e accedere a ricompense speciali, visita la pagina per fare l'upgrade." + } +} diff --git a/locales/JP_ja.json b/locales/ja_JP.json similarity index 96% rename from locales/JP_ja.json rename to locales/ja_JP.json index 9e75ff0..b060966 100644 --- a/locales/JP_ja.json +++ b/locales/ja_JP.json @@ -11,7 +11,7 @@ "hero": { "subtitle": "再構築された", "title": "ゲームサーバー", - "text": "Pretendoは、公式のサーバーが終了した後も続けてオンライン接続ができるように作成されている、3DSとWii Uの両方のための、ニンテンドーネットワークを代用する無料のオープンソースサーバーです。 ", + "text": "Pretendoは、公式のサーバーが終了した後も続けてオンライン接続ができるように作成されている、3DSとWii Uの両方のための、ニンテンドーネットワークを代用する無料のオープンソースサーバーです", "buttons": { "readMore": "もっと読む" } @@ -26,7 +26,7 @@ "progress": { "title": "進行状況", "paragraphs": [ - "現在、私たちはいろんなサービスとの連携を含めたアカウントサーバーと共に、主にMiiverseに着手しています。", + null, "3DSに関しては、マリオカート7に主に取り組んでいて、可能な場合は他のゲームにも取り組んでいます。" ] }, @@ -47,7 +47,7 @@ "answer": "Pretendoはまだ公開にできるほど開発されていません。ですが、そうなった場合はただパッチャーを実行しただけでPretendoを使えるようになります。" }, { - "question": "<機能/サービス>がいつできるか分かりますか?", + "question": "機能/サービスがいつできるか分かりますか?", "answer": "分かりません。多くのPretendoの機能は各自で開発されています。(例えば、Miiverseをこの人が開発しているとき、アカウント・フレンドシステムは他の人が開発している)ですので、全てを合わせた完成予想時間は分かりません。" }, { @@ -70,7 +70,7 @@ }, "showcase": { "title": "私たちが作るもの", - "text": "私たちのプロジェクトは色んな部分に分かれています。その一部を紹介します!", + "text": "私たちのプロジェクトは色んな部分に分かれています。その一部を紹介します。", "cards": [ { "title": "ゲームサーバー", @@ -84,7 +84,6 @@ "title": "Cemuサポート", "caption": "あなたの好きなWii Uタイトルを、Wii Uなしでプレイできます!" } - ] }, "credits": { @@ -169,6 +168,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Special thanks", @@ -219,7 +224,7 @@ }, "localizationPage": { "title": "レッツローカライズ", - "description": "公開されているJSONへのリンクを貼り付けてこのサイトに試してみて下さい!", + "description": "公開されているJSONへのリンクを貼り付けてこのサイトに試してみて下さい", "instructions": "ローカライズ方法を開く", "fileInput": "試してみるファイル", "filePlaceholder": "https://a.link.to/the_file.json", diff --git a/locales/KR_ko.json b/locales/ko_KR.json similarity index 82% rename from locales/KR_ko.json rename to locales/ko_KR.json index c7ce74f..3c9cd05 100644 --- a/locales/KR_ko.json +++ b/locales/ko_KR.json @@ -1,32 +1,32 @@ { "nav": { - "about": "정보", - "faq": "자주 묻는 질문", + "about": "", + "faq": "", "docs": "문서", - "credits": "크레딧", + "credits": "", "progress": "진행률", "blog": "블로그", "account": "계정" }, "hero": { - "subtitle": "다시 만들어진", - "title": "게임 서버", - "text": "Pretendo는 원본 서버가 중단되더라도 모두가 연결하여 플레이 할 수 있는 3DS/Wii U의 닌텐도 네트워크 대체 서버입니다.", + "subtitle": "", + "title": "", + "text": "", "buttons": { - "readMore": "자세히 알아보기" + "readMore": "" } }, "aboutUs": { - "title": "저희에 관하여", + "title": "", "paragraphs": [ - "Pretendo는 3DS와 Wii U를 위한 대체 서버를 만드는 것을 목표로 하는 오픈소스 합법 리버스 엔지니어링 프로젝트입니다.", + "", "저희 프로젝트는 무료이면서 오픈 소스이기 때문에 닌텐도 네트워크가 종료되고 긴 세월이 지나고도 운영될 수 있습니다." ] }, "progress": { - "title": "진행률", + "title": "", "paragraphs": [ - "현재, 저희는 여러 서비스와의 연동을 포함한 계정 서버 시스템과 Miiverse에 집중하고 있습니다.", + null, "3DS에서는, 가능하면 다른 프로젝트도 시도하려 하고 있으나 현재는 마리오 카트 7에 집중하고 있습니다." ] }, @@ -35,7 +35,7 @@ "text": "빠른 정보 제공을 위한, FAQ에 대한 답변입니다.", "QAs": [ { - "question": "Pretendo는 무엇인가요?", + "question": "", "answer": "Pretendo는 오픈 소스 닌텐도 네트워크 대체 프로젝트이며 Wii U와 3DS의 대체 서버를 만드려 합니다. 저희의 목표는 이 콘솔들의 온라인 기능을 유지시켜, 플레이어가 좋아하는 Wii U와 3DS 게임에서 최고의 경험을 할 수 있게 하는 것입니다." }, { @@ -47,11 +47,11 @@ "answer": "Pretendo는 아직 공용으로 사용할 수 없습니다. 그러나, 사용이 가능해지면 콘솔에서 홈브루 패쳐를 작동시키면 접속할 수 있게 될 것입니다." }, { - "question": "언제 <기능/서비스>를 사용할 수 있을지 알고 있나요?", + "question": "", "answer": "아니요. 대부분의 Pretendo 기능/서비스는 독립적으로 개발되고 있기 때문에 (예를 들어, 한 개발자가 Miiverse의 작업을 하고 있을 때 계정과 친구 서비스는 다른 개발자가 작업함), 예상 시간은 말씀드릴 수 없습니다." }, { - "question": "Cemu/에뮬레이터에서 Pretendo를 사용할 수 있을까요?", + "question": "", "answer": "Pretendo는 Wii U와 3DS 하드웨어만을 대상으로 제작하고 있습니다. 현재까지 닌텐도 네트워크 지원이 되는 에뮬레이터는 Cemu 뿐이나, Cemu는 공식적으로 커스텀 서버를 지원하지 않습니다. 그러나 Cemu에서도 Pretendo를 이용할 수 있게 될 것입니다.
Pretendo는 아직 Cemu를 지원하지 않습니다." }, { @@ -59,11 +59,11 @@ "answer": "저희는 닌텐도 네트워크의 영구 정지 리스트에 대한 권한이 없기 때문에, 저희 서비스를 사용할 때 정지가 되지는 않을 겁니다. 그러나, 저희는 저희만의 운영원칙이 있을 것이며, 그에 따르지 않는 것은 결국 영구 정지에 이어질 것입니다." }, { - "question": "Pretendo는 Wii/스위치를 지원할까요?", + "question": "", "answer": "Wii의 서비스는 이미 Wiimmfi가 제공하고 있습니다. 스위치의 Nintendo Switch Online은 유료이며 닌텐도 네트워크와 전혀 다르기 때문에, 현재로서도 지원할 계획은 없습니다." }, { - "question": "연결하기 위해 해킹이 필요할까요?", + "question": "", "answer": "네, 연결하기 위해 콘솔 해킹은 필요할 것입니다. 다만, Wii U에서는 홈브루 런처의 접근 권한만 있으면 됩니다 (예. Haxchi, Coldboot Haxchi, 웹 브라우저 취약점). 3DS에서의 연결 방법은 추후에 공개될 것입니다." } ] @@ -78,34 +78,33 @@ }, { "title": "Juxtaposition", - "caption": "최근에 처음 만들어진 것처럼 만드는, Miiverse의 재제작입니다. " + "caption": "최근에 처음 만들어진 것처럼 만드는, Miiverse의 재제작입니다." }, { "title": "Cemu 지원", "caption": "당신이 좋아하는 Wii U 타이틀을 콘솔 없이 플레이하세요!" } - ] }, "credits": { "title": "개발 팀", - "text": "프로젝트 뒤에서 일하는 사람들을 만나보세요", + "text": "", "people": [ { "name": "Jonathan Barrow (jonbarrow)", - "caption": "프로젝트 소유자 및 주도 개발자", + "caption": "Project owner and lead developer", "picture": "https://github.com/jonbarrow.png", "github": "https://github.com/jonbarrow" }, { "name": "Jemma (CaramelKat)", - "caption": "Miiverse 연구 및 개발", + "caption": "Miiverse research and development", "picture": "https://github.com/caramelkat.png", "github": "https://github.com/CaramelKat" }, { "name": "Rambo6Glaz", - "caption": "네트워크 설치 도구 개발 및 콘솔 연구", + "caption": "Network installer and console research", "picture": "https://github.com/Rambo6Glaz.png", "github": "https://github.com/Rambo6Glaz" }, @@ -117,7 +116,7 @@ }, { "name": "SuperMarioDaBom", - "caption": "콘솔 및 다른 시스템 연구", + "caption": "Console and other system research", "picture": "https://github.com/supermariodabom.png", "github": "https://github.com/SuperMarioDaBom" }, @@ -129,7 +128,7 @@ }, { "name": "monty", - "caption": "웹 개발", + "caption": "Web development", "picture": "https://github.com/ashmonty.png", "github": "https://github.com/ashmonty" }, @@ -165,14 +164,20 @@ }, { "name": "Shutterbug2000", - "caption": "마리오 카트 7 및 3DS 연구", + "caption": "Mario Kart 7 and 3DS research", "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Special Thanks", - "caption": "닌텐도 데이터 구조 연구", + "caption": "Research on Nintendo datastructures", "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", "github": "https://github.com/Kinnay" }, @@ -215,10 +220,10 @@ }, "blogPage": { "title": "블로그", - "description": "내용이 압축된 최신 업데이트입니다. 만약 더 많은 업데이트를 원하신다면, Patreon에 기부하는 것을 검토해 주세요." + "description": "내용이 압축된 최신 업데이트입니다. 만약 더 많은 업데이트를 원하신다면, Patreon에 기부하는 것을 검토해 주세요." }, "localizationPage": { - "title": "같이 번역해 주세요!", + "title": "같이 번역해 주세요", "description": "액세스 가능한 JSON의 링크를 붙여넣어서, 웹사이트에서 테스트해 보세요!", "instructions": "로컬라이즈", "fileInput": "테스트할 파일", diff --git a/locales/NO_nb.json b/locales/nb_NO.json similarity index 97% rename from locales/NO_nb.json rename to locales/nb_NO.json index c67b1bb..d1f61cb 100644 --- a/locales/NO_nb.json +++ b/locales/nb_NO.json @@ -11,7 +11,7 @@ "hero": { "subtitle": "Spillservere", "title": "Laget på nytt", - "text": "Pretendo er en gratis og åpen kildekode erstatning for Nintendo sine servere for både 3DS-en og Wii U-en, som tillater online tilkobling for alle, til og med etter de originale serverene blir nedlagt.", + "text": "Pretendo er en gratis og åpen kildekode erstatning for Nintendo sine servere for både 3DS-en og Wii U-en, som tillater online tilkobling for alle, til og med etter de originale serverene blir nedlagt", "buttons": { "readMore": "Les mer" } @@ -26,7 +26,7 @@ "progress": { "title": "Framgang", "paragraphs": [ - "Akkurat nå, jobber vi med Miiverse, samtidig med våres konto serverene og dens integrasjon med tjenestene.", + null, "For 3DS-en, jobber vi også med Mario Kart 7, med en lyst til å jobbe med andre spill når det er mulig." ] }, @@ -47,7 +47,7 @@ "answer": "Pretendo er ikke i en tilstand for offentlig bruk, men når den er har du muligheten å bruke Pretendo med å enkelt kjøre våres homebrew-patcher på din konsoll." }, { - "question": "Vet du når er klar?", + "question": "Vet du når funksjon/tjeneste er klar?", "answer": "Nei. Mange av Pretendo sine funksjoner/tjenester er utvikler uavhengelig (for eksempel, Miiverse kan bli jobber på av en utvikler mens Kontoer og Venner blir jobbet på av en annen utvikler) og derfor kan vi ikke gi en generell ETA for hvor lang tid dette kommer til å ta." }, { @@ -84,7 +84,6 @@ "title": "Støtte for cemu", "caption": "Spill dine favoritt Wii U titler til og med uten en Wii U-konsoll!" } - ] }, "credits": { @@ -169,6 +168,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Spesiell takk", @@ -241,4 +246,4 @@ ] } } -} \ No newline at end of file +} diff --git a/locales/nl_NL.json b/locales/nl_NL.json new file mode 100644 index 0000000..fdb5cfe --- /dev/null +++ b/locales/nl_NL.json @@ -0,0 +1,332 @@ +{ + "nav": { + "about": "Over", + "faq": "FAQ", + "docs": "Docs", + "credits": "Credits", + "progress": "Vooruitgang", + "blog": "Blog", + "account": "Account", + "accountWidget": { + "settings": "Instellingen", + "logout": "Uitloggen" + } + }, + "hero": { + "subtitle": "Game servers", + "title": "Nagemaakt", + "text": "Pretendo is een gratis en open source vervanger voor de servers van Nintendo voor de 3DS en de Wii U, zodat iedereen online kan spelen, zelfs als de Nintendo servers permanent gestopt worden", + "buttons": { + "readMore": "Lees meer" + } + }, + "aboutUs": { + "title": "Over ons", + "paragraphs": [ + "Pretendo is een open source project met het doel om het Nintendo Network voor 3DS en Wii U na te maken met clean-room reverse engineering.", + "Omdat onze diensten gratis en open source zijn, kunnen ze lang na het sluiten van Nintendo Network bestaan." + ] + }, + "progress": { + "title": "Vooruitgang", + "paragraphs": [ + null, + "We werken ook aan Mario Kart 7 voor de 3DS, met een wens om aan andere games te werken wanneer we die kans krijgen." + ], + "githubRepo": "GitHub repository" + }, + "faq": { + "title": "Veelgestelde vragen", + "text": "Hier zijn een aantal vragen die wij vaak horen.", + "QAs": [ + { + "question": "Wat is Pretendo?", + "answer": "Pretendo is een open source Nintendo Network vervanging met als doel om custom servers voor de Wii U en 3DS familie te maken. Ons doel is om de online functionaliteit van deze consoles te behouden, zodat spelers hun favoriete Wii U en 3DS games kunnen blijven spelen." + }, + { + "question": "Blijft mijn bestaande NNID werken op Pretendo?", + "answer": "Jammer genoeg niet. Bestande NNIDs zullen niet gaan werken op Pretendo, omdat enkel Nintendo je informatie heeft; Al is het zo dat een NNID-naar-PNID migratie technisch mogelijk, het zou wel gevaarlijk zijn en zouden we gevoelige gebruikers informatie krijgen die we niet willen bewaren." + }, + { + "question": "Hoe installeer ik Pretendo?", + "answer": "Pretendo is momenteel nog niet klaar voor publiekelijk gebruik. Zodra het dat wel is, kan je Pretendo gebruiken door een homebrew patcher te gebruiken op je console." + }, + { + "question": "Wanneer is feature/dienst klaar?", + "answer": "Dat weten we niet. Veel Pretendo diensten worden apart ontwikkeld (Miiverse wordt bijvoorbeeld door één ontwikkelaar ontwikkeld, en Accounts / Vrienden door een andere). Daardoor kunnen we geen datum geven voor wanneer het af is." + }, + { + "question": "Werkt Pretendo op Cemu of andere emulators?", + "answer": "Pretendo wordt voornamelijk ontwikkeld voor de hardware van de Wii U en 3DS. Momenteel is de enige emulator met NN support, Cemu. Cemu ondersteunt officieel geen custom servers, maar het zou alsnog mogelijk moeten zijn om Pretendo te gebruiken in Cemu.
Momenteel ondersteunt Pretendo Cemu niet." + }, + { + "question": "Als ik van Nintendo Network gebanned ben, blijf ik dan gebanned op Pretendo?", + "answer": "Nee. We hebben geen toegang tot de bans van Nintendo Network, dus je zal niet direct gebanned zijn op onze dienst. Echter zullen wij wel regels hebben bij het gebruik van onze diensten. Als je deze breekt, zal je gebanned worden." + }, + { + "question": "Gaat Pretendo ook de Wii of Switch ondersteunen?", + "answer": "Er zijn al custom servers voor Wii, namelijk Wiimmfi. Wij willen op het moment de Switch niet ondersteunen omdat Switch online betaald is, en compleet anders is dan Nintendo Network." + }, + { + "question": "Heb ik hacks nodig om te verbinden met Pretendo?", + "answer": "ja, je zal inderdaad je apparaat moeten hacken. Op de Wii U heb je enkel de Homebrew launcher (d.m.v bijvoorbeeld Haxchi, Coldboot Haxchi, of zelfs de web browser exploit) nodig. Over de 3DS plaatsen we in de toekomst meer informatie." + } + ] + }, + "credits": { + "title": "Het team", + "text": "Ontmoet het team achter het project", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "caption": "Eigenaar en hoofd ontwikkelaar", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "name": "Jemma (CaramelKat)", + "caption": "Miiverse research en ontwikkeling", + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat" + }, + { + "name": "Rambo6Glaz", + "caption": "Netwerkinstallatie tools en console research", + "picture": "https://github.com/Rambo6Glaz.png", + "github": "https://github.com/Rambo6Glaz" + }, + { + "name": "quarky", + "caption": "Onderzoek naar BOSS en patch ontwikkeling", + "picture": "https://github.com/QuarkTheAwesome.png", + "github": "https://github.com/QuarkTheAwesome" + }, + { + "name": "SuperMarioDaBom", + "caption": "Onderzoek naar console en andere systemen", + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "name": "Jip Fr", + "caption": "Hoofd website ontwikkeling", + "picture": "https://github.com/jipfr.png", + "github": "https://github.com/jipfr" + }, + { + "name": "monty", + "caption": "Website ontwikkelaar", + "picture": "https://github.com/ashmonty.png", + "github": "https://github.com/ashmonty" + }, + { + "name": "mrjvs", + "caption": "Ontwerper", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + } + ] + }, + "specialThanks": { + "title": "Speciale dank", + "text": "Zonder hen zou Pretendo vandaag niet zijn waar het is.", + "people": [ + { + "name": "superwhiskers", + "caption": "crunch ontwikkeling", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "name": "Stary", + "caption": "3DS ontwikkelaar and NEX dissector", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001" + }, + { + "name": "Billy", + "caption": "Archivist", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss" + }, + { + "name": "Shutterbug2000", + "caption": "Onderzoek naar Mario Kart 7 en 3DS", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, + { + "name": "Kinnay", + "special": "Speciale dank", + "caption": "Onderzoek naar Nintendo data structuur", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Icoontjes voor de Mii Editor en Just reacties", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "GitHub contributors", + "caption": "Vertalingen en andere contributions", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] + }, + "progressPage": { + "title": "Onze vooruitgang", + "description": "Zie hier onze vooruitgang! (Wordt elk uur ververst, geeft niet ALLE vooruitgang en doelen weer)" + }, + "blogPage": { + "title": "Blog", + "description": "De meest recente update samenvattingen. Als je vaker nieuws wil, overweeg ons op Patreon te ondersteunen.", + "published": "Gepubliceerd door", + "publishedOn": "op" + }, + "localizationPage": { + "title": "Laten we meer talen toevoegen", + "description": "Voeg hier een link in voor een openbaar JSON bestand om het op de site te testen", + "instructions": "Zie hier instructies voor het vertalen", + "fileInput": "Bestand om te testen", + "filePlaceholder": "https://een.link.naar/het_bestand.json", + "button": "Test bestand" + }, + "donation": { + "progress": "$${totd} van $${goald}/maand, ${perc}% van de maandelijkse doelstelling.", + "upgradePush": "Om een abonnee te worden en toegang te krijgen tot coole voordelen, bezoek je de a href=\"/account/upgrade\">upgrade pagina." + }, + "upgrade": { + "changeTierPrompt": "Weet je zeker dat je je abonnement op oldtiername wilt opzeggen en je wilt aanmelden voor newtiername?", + "back": "Terug", + "title": "Upgraden", + "description": "Het bereiken van de maandelijkse doelstelling maakt van Pretendo een fulltime baan, wat zorgt voor snellere updates van een hogere kwaliteit.", + "month": "Maand", + "tierSelectPrompt": "Selecteer een tier", + "unsub": "Opzeggen", + "unsubPrompt": "Weet je zeker dat je je abonnement voor tiername wilt opzeggen? Je verliest toegang tot de voordelen voor die tier.", + "unsubConfirm": "Opzeggen", + "changeTier": "Verander tier", + "changeTierConfirm": "Verander van tier" + }, + "showcase": { + "cards": [ + { + "title": "Game servers", + "caption": "Wij brengen jouw favoriete games en content terug via custom servers." + }, + { + "title": "Juxtaposition", + "caption": "Een nieuwe versie van Miiverse, alsof het in de moderne tijd is gemaakt." + }, + { + "caption": "Speel jouw favoriete Wii U spellen, zelfs zonder een console!", + "title": "Cemu ondersteuning" + } + ], + "title": "Wat wij maken", + "text": "Ons project heeft veel onderdelen. Hier zijn een paar voorbeelden." + }, + "discordJoin": { + "text": "Word lid van onze Discord server om de laatste updates over het project te ontvangen.", + "title": "Blijf up-to-date", + "widget": { + "text": "Krijg realtime updates over onze voortgang", + "button": "Word lid van de server" + } + }, + "footer": { + "socials": "Socialmedia profielen", + "usefulLinks": "Nuttige links", + "widget": { + "captions": [ + "Wil je up-to-date blijven?", + "Word lid van onze Discord server!" + ], + "button": "Word nu lid!" + } + }, + "account": { + "loginForm": { + "login": "Login", + "register": "Registreer", + "detailsPrompt": "Voor jouw account gegevens hieronder in", + "username": "Gebruikersnaam", + "password": "Wachtwoord", + "confirmPassword": "Bevestig wachtwoord", + "email": "E-mail adres", + "miiName": "Mii naam", + "forgotPassword": "Wachtwoord vergeten?", + "registerPrompt": "Nog geen account?", + "loginPrompt": "Heb je al een account?" + }, + "settings": { + "downloadFiles": "Download account bestanden", + "upgrade": "Upgrade account", + "settingCards": { + "nickname": "Bijnaam", + "profile": "Profiel", + "birthDate": "Geboortedatum", + "gender": "Geslacht", + "country": "Land/regio", + "timezone": "Tijdszone", + "serverEnv": "Server environment", + "production": "Production", + "beta": "Beta", + "upgradePrompt": "Beta servers zijn exclusief voor beta testers.
Om een beta tester te worden, moet je je account upgraden naar een hogere tier.", + "hasAccessPrompt": "Jouw huidige tier geeft je beta server toegang. Cool!", + "email": "E-mail adres", + "password": "Wachtwoord", + "signInSecurity": "Aanmeldgegevens en beveiliging", + "otherSettings": "Andere instellingen", + "discord": "Discord", + "connectedToDiscord": "Verbonden met Discord als", + "removeDiscord": "Verwijder Discord account", + "noDiscordLinked": "Geen Discord account gekoppeld.", + "linkDiscord": "Koppel Discord account", + "newsletter": "Nieuwsbrief", + "newsletterPrompt": "Ontvang project updates via e-mail (je kan je op elk moment afmelden)", + "passwordPrompt": "Voer je PNID wachtwoord in om Cemu bestanden te downloaden", + "passwordResetNotice": "Na het wijzigen van je wachtwoord, word je uitgelogd van al je apparaten.", + "fullSignInHistory": "Bekijk volledige aanmeld geschiedenis", + "signInHistory": "Aanmeld geschiedenis" + }, + "downloadFilesDescription": "(werkt niet op Nintendo Network)" + }, + "accountLevel": [ + "Standaard", + "Tester", + "Moderator", + "Ontwikkelaar" + ], + "banned": "Gebanned" + }, + "modals": { + "cancel": "Annuleren", + "confirm": "Bevestigen" + }, + "docs": { + "missingInLocale": "Deze pagina is niet beschikbaar in je huidige taal. Bekijk de Engelse versie hieronder.", + "quickLinks": { + "header": "Snelkoppelingen", + "links": [ + { + "header": "Installeer Pretendo", + "caption": "Bekijk de installatie instructies" + }, + { + "header": "Heb je een foutmelding gekregen?", + "caption": "Bekijk het hier" + } + ] + } + } +} diff --git a/locales/PL_pl.json b/locales/pl_PL.json similarity index 97% rename from locales/PL_pl.json rename to locales/pl_PL.json index 7e604b0..b4df0ec 100644 --- a/locales/PL_pl.json +++ b/locales/pl_PL.json @@ -26,7 +26,7 @@ "progress": { "title": "Postęp", "paragraphs": [ - "Aktualnie pracujemy nad Miiverse, razem z obsługą kont online oraz integracją z różnymi usługami.", + null, "Mówiąc o konsoli 3DS, aktualnie pracujemy również nad Mario Kart 7, a w przyszłości mamy nadzieję, że możemy popracować nad innymi grami." ] }, @@ -47,7 +47,7 @@ "answer": "Pretendo nie jest aktualnie w takim stanie, w którym może być wykorzystywane publicznie. Jednak gdy będzie już dostępne, będziesz mógł otrzymać dostęp do Pretendo uruchamiając patcher homebrew na twojej konsoli." }, { - "question": "Czy drużyna Pretendo wie, kiedy będzie gotowa/gotowy?", + "question": "Czy drużyna Pretendo wie, kiedy funkcja/serwis będzie gotowa/gotowy?", "answer": "Nie. Wiele z funkcji/usług Pretendo są tworzone przez różnych programistów, przez to nie możemy podać szacowanego terminu ukończenia tej rzeczy." }, { @@ -74,7 +74,7 @@ "cards": [ { "title": "Serwery gier", - "caption": "Serwery twoich ulubionych gier i innych treści powracają!" + "caption": "Serwery twoich ulubionych gier i innych treści powracają." }, { "title": "Zestawienie przeszłości i teraźniejszości", @@ -84,7 +84,6 @@ "title": "Wsparcie dla Cemu", "caption": "Graj w twoje ulubione gry na Wii U bez tej konsoli!" } - ] }, "credits": { @@ -169,6 +168,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Specjalne podziękowania", diff --git a/locales/BR_pt.json b/locales/pt_BR.json similarity index 94% rename from locales/BR_pt.json rename to locales/pt_BR.json index 979cc85..343153b 100644 --- a/locales/BR_pt.json +++ b/locales/pt_BR.json @@ -26,7 +26,7 @@ "progress": { "title": "Progresso", "paragraphs": [ - "Atualmente estamos trabalhando no Miiverse, assim como no nossos servidores de contas e suas integrações com os serviços.", + null, "Para o Nintendo 3DS também estamos trabalhando no Mario Kart 7, pretendemos trabalhar em outros jogos quando possível." ] }, @@ -47,7 +47,7 @@ "answer": "Pretendo atualmente não está disponível para uso pelo público geral. No entanto, quando estiver pronto, você poderá usar a Pretendo executando nosso patcher homebrew no seu console." }, { - "question": "Você sabe quando recurso / serviço estará pronto?", + "question": "Você sabe quando recurso/serviço estará pronto?", "answer": "Não. Muitos dos recursos e serviços da Pretendo são desenvolvidos de forma independente (por exemplo, o Miiverse pode ser trabalhado por um desenvolvedor enquanto as contas e lista de amigos são trabalhados por outro) e, portanto, não podemos estimar quanto tempo isso pode levar." }, { @@ -84,7 +84,6 @@ "title": "Suporte para Cemu", "caption": "Jogue seus títulos favoritos do Wii U mesmo sem um console!" } - ] }, "credits": { @@ -169,6 +168,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Agradecimentos especiais", @@ -224,21 +229,5 @@ "fileInput": "Arquivo para testar", "filePlaceholder": "https://a.link.to/the_file.json", "button": "Testar aqui" - }, - "docs": { - "missingInLocale": "This page is unavailable in your locale. Please check the English version below.", - "quickLinks": { - "header": "Quick links", - "links": [ - { - "header": "Install Pretendo", - "caption": "View the setup instructions" - }, - { - "header": "Got an error?", - "caption": "Search for it here" - } - ] - } } } diff --git a/locales/RO_ro.json b/locales/ro_RO.json similarity index 93% rename from locales/RO_ro.json rename to locales/ro_RO.json index 21a8ffa..da0ca2e 100644 --- a/locales/RO_ro.json +++ b/locales/ro_RO.json @@ -4,9 +4,7 @@ "faq": "FAQ", "docs": "Docs", "credits": "Mulțumiri", - "progress": "Progres", - "blog": "Blog", - "account": "Account" + "progress": "Progres" }, "hero": { "subtitle": "Servere de Jocuri", @@ -26,7 +24,7 @@ "progress": { "title": "Progres", "paragraphs": [ - "Momentan, lucrăm la Miiverse, împreună cu serverele de conturi și integrarea de servicii.", + null, "Pentru 3DS, lucrăm de asemenea la Mario Kart 7, cu dorința de a continua să lucrăm și la alte jocuri dacă este posibil." ] }, @@ -47,7 +45,7 @@ "answer": "Pretendo nu este momentan într-un stadiu pregătit pentru uzul public. Dar, odată ce este gata poți folosi Pretendo doar dacă rulezi patcher-ul nostru pe consola ta." }, { - "question": "Știți când va fi gata?", + "question": "Știți când caracteristică/serviciu va fi gata?", "answer": "Nu. Majoritatea caracteristicilor/serviciilor sunt dezvoltate independent (spre exemplu, Miiverse poate fii dezvoltat de o persoană iar Conturile și Prietenii sunt dezvoltate de altcineva) și de aceea nu putem oferii o estimare a timpului necesar finisării." }, { @@ -84,7 +82,6 @@ "title": "Suport Cemu", "caption": "Joacă jocurile tale preferate de pe Wii U chiar și fără o consolă!" } - ] }, "credits": { @@ -169,6 +166,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Mulțumiri speciale", @@ -224,21 +227,5 @@ "fileInput": "Fișier de testare", "filePlaceholder": "https://a.link.to/the_file.json", "button": "Testează fișier" - }, - "docs": { - "missingInLocale": "This page is unavailable in your locale. Please check the English version below.", - "quickLinks": { - "header": "Quick links", - "links": [ - { - "header": "Install Pretendo", - "caption": "View the setup instructions" - }, - { - "header": "Got an error?", - "caption": "Search for it here" - } - ] - } } } diff --git a/locales/RU_ru.json b/locales/ru_RU.json similarity index 89% rename from locales/RU_ru.json rename to locales/ru_RU.json index 2edbaf7..ed4c49c 100644 --- a/locales/RU_ru.json +++ b/locales/ru_RU.json @@ -4,13 +4,11 @@ "faq": "ЧаВо", "docs": "Docs", "credits": "Команда", - "progress": "Прогресс", - "blog": "Blog", - "account": "Account" + "progress": "Прогресс" }, "hero": { "subtitle": "Игровые сервера", - "title": "Воссозданны", + "title": "Воссозданы", "text": "Pretendo - бесплатная замена игровых серверов для 3DS и Wii U с открытым исходным кодом, обеспечивающая онлайн функции данных консолей, даже после закрытия официальных серверов", "buttons": { "readMore": "Читать больше" @@ -20,27 +18,27 @@ "title": "О нас", "paragraphs": [ "Pretendo - проект с открытым исходным кодом, цель которого воссоздать Nintendo Network для консолей 3DS и Wii U, используя обратную-разработку (reverse engineering).", - "Так как наши сервисы бесплатны и имеют открытый исходный код, то существовать Pretendo может ещё очень долно после закрытия официального Nintendo Network." + "Так как наши сервисы бесплатны и имеют открытый исходный код, то существовать Pretendo может ещё очень долго после закрытия официального Nintendo Network." ] }, "progress": { "title": "Прогресс", "paragraphs": [ - "На данный момент, мы работаем над Miiverse, вместе с нашими серверами аккаунтов и их интеграция в другие сервисы.", + null, "Насчёт 3DS, мы также работаем над Mario Kart 7, а также если возможно, продолжить работу и над другими онлайн играми." ] }, "faq": { "title": "Часто задаваемые Вопросы (ЧаВо)", - "text": "Здесь мы собрали ответы на вопросы, котрорые нам часто задают.", + "text": "Здесь мы собрали ответы на вопросы, которые нам часто задают.", "QAs": [ { "question": "Что такое Pretendo?", "answer": "Pretendo - проект с открытым исходным кодом, цель которого воссоздать Nintendo Network для консолей 3DS и Wii U. Наша главная задача - сохранить онлайн функционал данных консолей, чтобы игроки и дальше смогли бы играть в свои любимые игры с мультиплеером, даже после закрытия официальных серверов." }, { - "question": "Будет ли мой существуещий NNID работать в Pretendo?", - "answer": "К сожалению - нет. Существуещие NNID не смогут работать в Pretendo, так как только Nintendo хранит у себя информацию о пользователях. Конечно миграция с NNID на PNID чисто теоритически возможна, но для этого нам придётся хранить всю информацию о пользователях у себя. А это то, чего мы не хотим делать во избежание утечек конфиденциальной информации." + "question": "Будет ли мой существующий NNID работать в Pretendo?", + "answer": "К сожалению - нет. Существующий NNID не смогут работать в Pretendo, так как только Nintendo хранит у себя информацию о пользователях. Конечно миграция с NNID на PNID чисто теоретически возможна, но для этого нам придётся хранить всю информацию о пользователях у себя. А это то, чего мы не хотим делать во избежание утечек конфиденциальной информации." }, { "question": "Как мне подключиться к Pretendo?", @@ -68,32 +66,13 @@ } ] }, - "showcase": { - "title": "What we make", - "text": "Our project has many components. Here are some of them.", - "cards": [ - { - "title": "Game servers", - "caption": "Bringing back your favorite games and content using custom servers." - }, - { - "title": "Juxtaposition", - "caption": "A re-imagining of Miiverse, as if it were made in the modern era." - }, - { - "title": "Cemu support", - "caption": "Play your favorite Wii U titles even without a console!" - } - - ] - }, "credits": { "title": "Наша команда", - "text": "Ознакомтесь с командой, которая работает над разработкой Pretendo.", + "text": "Ознакомьтесь с командой, которая работает над разработкой Pretendo.", "people": [ { "name": "Jonathan Barrow (jonbarrow)", - "caption": "Руководитель проекта и гл. разрабочик", + "caption": "Руководитель проекта и гл. разработчик", "picture": "https://github.com/jonbarrow.png", "github": "https://github.com/jonbarrow" }, @@ -169,6 +148,12 @@ "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", "github": "https://github.com/shutterbug2000" }, + { + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, { "name": "Kinnay", "special": "Особая благодарность", @@ -217,6 +202,15 @@ "title": "Blog", "description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on Patreon." }, + "account": { + "accountLevel": [ + "Standard", + "Tester", + "Moderator", + "Developer" + ], + "banned": "Banned" + }, "localizationPage": { "title": "Let's localize", "description": "Paste a link to a publicly accessible JSON locale to test it on the website", diff --git a/locales/tr_TR.json b/locales/tr_TR.json new file mode 100644 index 0000000..ce13951 --- /dev/null +++ b/locales/tr_TR.json @@ -0,0 +1,61 @@ +{ + "nav": { + "accountWidget": { + "logout": "Çıkış yap", + "settings": "Ayarlar" + }, + "about": "Hakkında", + "faq": "SSS", + "docs": "Dökümanlar", + "progress": "İlerleme", + "blog": "Blog", + "account": "Hesap" + }, + "hero": { + "subtitle": "Oyun sunucuları", + "title": "Yeniden oluşturuldu", + "buttons": { + "readMore": "Daha fazlasını oku" + } + }, + "aboutUs": { + "title": "Hakkımızda" + }, + "progress": { + "title": "İlerleme", + "githubRepo": "Github deposu" + }, + "faq": { + "title": "Sık Sorulan Sorular", + "QAs": [ + { + "question": "Pretendo ney?" + }, + { + "question": "Zaten varolan NNIDlerim Pretendo'da çalışıcakmı?", + "answer": "Üzgünüz fakat hayır. Zaten varolan NNIDler Pretendo'da çalışmayacak." + }, + { + "question": "Pretendo'yu nası kullanırım?", + "answer": "Pretendo şuanda kullanıma açık değil. Fakat kullanıma açık olduğunda Pretendo'yu bir homebrew yamalayıcısı çalıştırarak kullanabiliceksiniz." + }, + { + "question": "Servis yada özelliğin ne zaman hazır olacağını biliyormusunuz?" + } + ] + }, + "showcase": { + "cards": [ + {}, + { + "title": "Juxtaposition" + }, + { + "title": "Cemu desteği" + } + ] + }, + "credits": { + "title": "Takımımız" + } +} diff --git a/locales/uk_UA.json b/locales/uk_UA.json new file mode 100644 index 0000000..02050a6 --- /dev/null +++ b/locales/uk_UA.json @@ -0,0 +1,328 @@ +{ + "aboutUs": { + "paragraphs": [ + "Pretendo — це проект із відкритим вихідним кодом, метою якого є відтворення мережі Nintendo для 3DS і Wii U за допомогою зворотного проектування чистих приміщень.", + "Оскільки наші служби будуть безкоштовними та відкритими, вони можуть існувати ще довго після неминучого закриття Nintendo Network." + ], + "title": "Про нас" + }, + "faq": { + "QAs": [ + { + "answer": "Pretendo — це заміна Nintendo Network з відкритим вихідним кодом, яка спрямована на створення користувальницьких серверів для консолей сімейства Wii U та 3DS. Наша мета — зберегти онлайн-функціональність цих консолей, щоб дозволити гравцям продовжувати грати в улюблені ігри Wii U та 3DS на повну силу.", + "question": "Що таке Pretendo?" + }, + { + "answer": "На жаль, ні. Існуючі NNID не працюватимуть на Pretendo, оскільки лише Nintendo зберігає ваші дані користувача; Хоча міграція з NNID на PNID теоретично можлива, це буде ризиковано та вимагає конфіденційних даних користувача, які ми не хочемо зберігати.", + "question": "Чи працюватимуть мої наявні NNID на Pretendo?" + }, + { + "question": "Як використовувати Pretendo?", + "answer": "Pretendo наразі не готовий для загального використання. Однак, як тільки це станеться, ви зможете використовувати Pretendo, просто запустивши наш homebrew patcher на вашій консолі." + }, + { + "answer": "Ні. Багато функцій/сервісів Pretendo розроблено незалежно (наприклад, над Miiverse може працювати один розробник, а над обліковими записами та друзями — інший), тому ми не можемо вказати скільки часу це займе.", + "question": "Ви знаєте, коли функція/служба буде готова?" + }, + { + "answer": "Pretendo розроблено для апаратного забезпечення Wii U та 3DS; наразі єдиним емулятором для цих консолей із підтримкою NN є Cemu. Cemu офіційно не підтримує користувацькі сервери, але Pretendo все ще можна використовувати з Cemu.
Pretendo наразі не підтримує Cemu.", + "question": "Чи працює Pretendo на Cemu/емуляторах?" + }, + { + "answer": "Ми не маємо доступу до блокувань Nintendo Network, і всі користувачі не будуть заблоковані в нашому сервісі. Однак у нас будуть правила, яких слід дотримуватися під час користування сервісом, і недотримання цих правил може призвести до блокування.", + "question": "Якщо мене забанять у Nintendo Network, чи залишиться бан під час використання Pretendo?" + }, + { + "question": "Чи підтримуватиме Pretendo Wii/Switch?", + "answer": "Wii уже має спеціальні сервери, надані Wiimmfi. Наразі ми не хочемо орієнтуватися на Switch, оскільки він платний і повністю відрізняється від Nintendo Network." + }, + { + "question": "Чи знадобляться мені хаки для підключення?", + "answer": "Так, вам потрібно буде хакнути пристрій, щоб підключитися; однак на Wii U вам потрібен буде лише доступ до Homebrew Launcher (тобто Haxchi, Coldboot Haxchi або навіть експлойт веб-браузера), а інформація про те, як 3DS підключатиметься, буде надана пізніше." + } + ], + "title": "Часті Запитання", + "text": "Ось кілька поширених запитань, які нам задають, щоб отримати легку інформацію." + }, + "showcase": { + "cards": [ + { + "caption": "Повернення ваших улюблених ігор і вмісту за допомогою спеціальних серверів.", + "title": "Ігрові сервери" + }, + { + "title": "Juxtaposition", + "caption": "Повторне уявлення про Miiverse, ніби це було зроблено в сучасну епоху." + }, + { + "caption": "Грайте в улюблені ігри Wii U навіть без консолі!", + "title": "Підтримка Cemu" + } + ], + "title": "Що ми робимо", + "text": "Наш проект має багато компонентів. Ось деякі з них." + }, + "credits": { + "people": [ + { + "caption": "Власник проекту та головний розробник", + "name": "Jonathan Barrow (jonbarrow)", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "github": "https://github.com/CaramelKat", + "caption": "Дослідження та розробки Miiverse", + "name": "Jemma (CaramelKat)", + "picture": "https://github.com/caramelkat.png" + }, + { + "name": "Rambo6Glaz", + "caption": "Інсталятор мережі та дослідження консолі", + "github": "https://github.com/Rambo6Glaz", + "picture": "https://github.com/Rambo6Glaz.png" + }, + { + "name": "quarky", + "caption": "Дослідження та розробка виправлень BOSS", + "picture": "https://github.com/QuarkTheAwesome.png", + "github": "https://github.com/QuarkTheAwesome" + }, + { + "name": "SuperMarioDaBom", + "caption": "Консоль та інші системні дослідження", + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "github": "https://github.com/jipfr", + "name": "Jip Fr", + "caption": "Керівник веб-розробки", + "picture": "https://github.com/jipfr.png" + }, + { + "github": "https://github.com/ashmonty", + "name": "monty", + "picture": "https://github.com/ashmonty.png", + "caption": "Веб-розробка" + }, + { + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs", + "name": "mrjvs", + "caption": "Дизайнер" + } + ], + "title": "Команда", + "text": "Познайомтеся з командою проекту" + }, + "nav": { + "credits": "Титри", + "progress": "Прогрес", + "blog": "Блог", + "about": "Про", + "faq": "ЧаПи", + "accountWidget": { + "settings": "Налаштування", + "logout": "Вийти" + }, + "docs": "Документи", + "account": "Аккаунт" + }, + "hero": { + "subtitle": "Ігрові сервери", + "title": "Відтворено", + "buttons": { + "readMore": "Читати далі" + }, + "text": "Pretendo — це безкоштовна заміна серверів Nintendo з відкритим вихідним кодом як для 3DS, так і для Wii U, що дозволяє всім підключатися до Інтернету навіть після припинення роботи оригінальних серверів" + }, + "progress": { + "title": "Прогрес", + "githubRepo": "Репозиторій Github" + }, + "specialThanks": { + "title": "Особлива подяка", + "people": [ + { + "name": "superwhiskers", + "caption": "розробка бібліотеки crunch", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "name": "Stary", + "caption": "3DS розробник і диссектор NEX", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001" + }, + { + "name": "Billy", + "caption": "Охоронець", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss" + }, + { + "name": "Shutterbug2000", + "caption": "Дослідження Mario Kart 7 і 3DS", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "caption": "Надали інформацію про Miiverse", + "github": "https://twitter.com/rverseClub", + "name": "rverse", + "picture": "https://github.com/rverseTeam.png" + }, + { + "name": "Kinnay", + "caption": "Дослідження структур даних Nintendo", + "special": "Особлива подяка", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "caption": "Іконка для Mii Editor і реакцій Juxt", + "picture": "https://github.com/ninstar.png", + "name": "NinStar", + "github": "https://github.com/ninstar" + }, + { + "name": "Учасники GitHub", + "caption": "Локалізації та інші внески", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ], + "text": "Без них Pretendo не було б таким, яким воно є сьогодні." + }, + "discordJoin": { + "title": "Будьте в курсі подій", + "text": "Приєднуйтесь до нашого сервера Discord, щоб отримувати останні оновлення про проект.", + "widget": { + "button": "Приєднатися до серверу", + "text": "Отримуйте оновлення в реальному часі про наш прогрес" + } + }, + "footer": { + "socials": "Соціальні сеті", + "usefulLinks": "Корисні посилання", + "widget": { + "captions": [ + "Хочете бути в курсі?", + "Приєднуйтесь до нашого сервера Discord!" + ], + "button": "Приєднуйся зараз!" + } + }, + "blogPage": { + "title": "Блог", + "publishedOn": "у", + "published": "Опубліковано", + "description": "Останні оновлення у стислому вигляді. Якщо ви хочете отримувати частіші оновлення, підтримайте нас на Patreon." + }, + "account": { + "loginForm": { + "login": "Логін", + "register": "Зареєструватися", + "username": "Ім'я користувача", + "password": "Пароль", + "confirmPassword": "Підтвердьте пароль", + "email": "Електронна пошта", + "miiName": "Ім'я Mii", + "registerPrompt": "Немає аккаунту?", + "loginPrompt": "Вже є аккаунт?", + "detailsPrompt": "Введіть дані свого облікового запису нижче", + "forgotPassword": "Забули пароль?" + }, + "settings": { + "upgrade": "Прокачати аккаунт", + "settingCards": { + "profile": "Профіль", + "nickname": "Нікнейм", + "birthDate": "Дата народження", + "country": "Країна/регіон", + "timezone": "Часовий пояс", + "production": "Виробництво", + "signInSecurity": "Вхід і безпека", + "email": "Електронна пошта", + "password": "Пароль", + "passwordResetNotice": "Після зміни пароля ви вийдете з усіх пристроїв.", + "signInHistory": "Історія входів", + "otherSettings": "Інші налаштування", + "discord": "Discord", + "connectedToDiscord": "Підключений до Discord як", + "removeDiscord": "Вийти з аккаунту Discord", + "noDiscordLinked": "Аккаунт Discord не пов’язано.", + "passwordPrompt": "Введіть свій пароль PNID, щоб завантажити файли Cemu", + "serverEnv": "Серверне середовище", + "hasAccessPrompt": "Ваш поточний рівень надає вам доступ до бета-сервера. Круто!", + "gender": "Стать", + "beta": "Бета", + "upgradePrompt": "Бета-сервери призначені виключно для бета-тестерів.
Щоб стати бета-тестером, прокачайте аккаунт до вищого рівня.", + "fullSignInHistory": "Переглянути повну історію входів", + "linkDiscord": "Прив'язати аккаунт Discord", + "newsletter": "Розсилка новин", + "newsletterPrompt": "Отримувати оновлення проекту електронною поштою (ви можете відмовитися в будь-який час)" + }, + "downloadFilesDescription": "(не працюватиме в Nintendo Network)", + "downloadFiles": "Завантажити файли облікового запису" + }, + "accountLevel": [ + "Стандартний", + "Тестер", + "Модератор", + "Розробник" + ], + "banned": "Заблокован" + }, + "upgrade": { + "title": "Прокачати", + "month": "місяць", + "tierSelectPrompt": "Виберіть рівень", + "unsub": "Відписатися", + "unsubConfirm": "Відписатися", + "changeTier": "Змінити рівень", + "changeTierConfirm": "Змінити рівень", + "back": "Назад", + "changeTierPrompt": "Ви впевнені, що хочете скасувати підписку на oldtiername і підписатися на newtiername?", + "description": "Досягнення місячної цілі зробить Pretendo повноцінною роботою, забезпечуючи якісніші оновлення з більшою швидкістю.", + "unsubPrompt": "Ви впевнені, що бажаєте скасувати підписку на tiername? Ви втратите доступ до бонусів, пов’язаних із цим рівнем." + }, + "donation": { + "progress": "$${totd} з $${goald}/місяць, ${perc}% місячної цілі.", + "upgradePush": "Щоб стати передплатником і отримати доступ до цікавих бонусів, відвідайте сторінку прокачки." + }, + "localizationPage": { + "title": "Локалізуємо", + "instructions": "Переглянути інструкції з локалізації", + "description": "Вставте посилання на загальнодоступну мову JSON, щоб протестувати її на веб-сайті", + "fileInput": "Файл для тестування", + "filePlaceholder": "https://a.link.to/the_file.json", + "button": "Перевірити файл" + }, + "docs": { + "quickLinks": { + "header": "Швидкі посилання", + "links": [ + { + "caption": "Переглянути інструкції з налаштування", + "header": "Встановити Pretendo" + }, + { + "header": "Виникла помилка?", + "caption": "Рішення шукайте тут" + } + ] + }, + "missingInLocale": "Ця сторінка недоступна у вашому регіоні. Будь ласка, перевірте англійську версію нижче." + }, + "progressPage": { + "title": "Наш прогрес", + "description": "Перевірте хід проекту та цілі! (Оновлюється щогодини або близько того, не відображає ВСІ цілі проекту або прогрес)" + }, + "modals": { + "cancel": "Скасувати", + "confirm": "Підтвердити" + } +} diff --git a/locales/zh_CN.json b/locales/zh_CN.json new file mode 100644 index 0000000..8eaa3e6 --- /dev/null +++ b/locales/zh_CN.json @@ -0,0 +1,332 @@ +{ + "nav": { + "about": "关于", + "faq": "FAQ", + "docs": "文件", + "credits": "贡献者", + "progress": "进度", + "blog": "博客", + "account": "用户", + "accountWidget": { + "settings": "设置", + "logout": "登出" + } + }, + "hero": { + "subtitle": "游戏服务器", + "title": "重新创建", + "text": "Pretendo 是任天堂 3DS 和 Wii U 服务器的免费和开源替代品,允许所有人在线连接,即使在原始服务器已经关闭", + "buttons": { + "readMore": "更多" + } + }, + "aboutUs": { + "title": "关于我们", + "paragraphs": [ + "Pretendo 是一个开源项目,旨在使用逆向工程为 3DS 和 Wii U 重新创建 Nintendo Network。", + "我们的服务将是免费和开源的,它们可以在 Nintendo Network 不可避免的关闭之后还存在。" + ] + }, + "progress": { + "title": "进度", + "paragraphs": [ + null, + "对于 3DS,我们也在创建《马里奥赛车 7》的服务器,并希望在可能的情况下继续为他游戏做服务器。" + ], + "githubRepo": "Github 信息库" + }, + "faq": { + "title": "常见问题", + "text": "以下是我们被问到的一些常见问题,以获得简单的信息。", + "QAs": [ + { + "question": "什么是 Pretendo?", + "answer": "Pretendo 是一个开源的 Nintendo Network 替代品,旨在为 Wii U 和 3DS 系列游戏机构建自定义服务器。我们的目标是保留这些游戏机的在线功能,让玩家可以继续尽情畅玩他们最喜欢的 Wii U 和 3DS 游戏。" + }, + { + "question": "我现有的 NNID 可以在 Pretendo 上工作吗?", + "answer": "遗憾的是,不行。现有的 NNID 将无法在 Pretendo 上运行,因为只有任天堂拥有您的用户数据;虽然 NNID 到 PNID 的迁移在理论上是可能的,但它存在风险并且需要我们不希望持有的敏感用户数据。" + }, + { + "question": "如何使用 Pretendo?", + "answer": "Pretendo 目前尚未处于可供公众使用的状态。但是,一旦完成,您只需在系统上运行我们的自制补丁程序即可使用 Pretendo。" + }, + { + "question": "你知道 功能/服务 什么时候准备好吗?", + "answer": "不可以。许多 Pretendo 的功能/服务是独立开发的(例如,Miiverse 可能由一位开发人员构建,而 Accounts 和 Friends 正在由另一位开发人员构建),因此我们无法给出这需要多长时间的总体预计到达时间。" + }, + { + "question": "Pretendo 是否适用于 Cemu/模拟器?", + "answer": "Pretendo 是专为 Wii U 和 3DS 设计的;目前,这些支持 NN 的硬件的唯一模拟器是 Cemu。 Cemu 不正式支持自定义服务器,但仍然可以将 Pretendo 与 Cemu 一起使用。
Pretendo 目前不支持 Cemu。" + }, + { + "question": "如果我在 Nintendo Network 上被封账号,我在使用 Pretendo 时还会被禁吗?", + "answer": "我们将无法访问 Nintendo Network 的禁令,并且不会禁止所有用户使用我们的服务。但是,我们在使用服务时将遵守规则,不遵守这些规则可能会导致被禁止。" + }, + { + "question": "Pretendo 会支持 Wii/Switch 吗?", + "answer": "Wii 已经有 Wiimmfi 提供的自定义服务器。我们目前不希望以 Switch 为目标,因为它既是付费的,又与 Nintendo Network 完全不同。" + }, + { + "question": "我需要黑客来连接吗?", + "answer": "是的,您需要破解您的设备才能连接;但是,在 Wii U 上,您只需要访问 Homebrew Launcher(即 Haxchi、Coldboot Haxchi 甚至网络浏览器漏洞利用程序),稍后会提供有关 3DS 将如何连接的信息。" + } + ] + }, + "showcase": { + "title": "我们做什么", + "text": "我们的项目有很多组件。这里是其中的一些。", + "cards": [ + { + "title": "游戏服务器", + "caption": "使用自定义服务器带回您最喜爱的游戏和内容。" + }, + { + "title": "Juxtaposition", + "caption": "对 Miiverse 的重新想象,仿佛它是在现代时代制造的。" + }, + { + "title": "支持 Cemu", + "caption": "即使没有硬件也能玩你最喜欢的 Wii U 游戏!" + } + ] + }, + "credits": { + "title": "团队", + "text": "认识项目背后的团队", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "caption": "项目所有者和首席开发人员", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "name": "Jemma (CaramelKat)", + "caption": "Miiverse 研发", + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat" + }, + { + "name": "Rambo6Glaz", + "caption": "网络安装程序和系统研究", + "picture": "https://github.com/Rambo6Glaz.png", + "github": "https://github.com/Rambo6Glaz" + }, + { + "name": "quarky", + "caption": "BOSS研究和补丁开发", + "picture": "https://github.com/QuarkTheAwesome.png", + "github": "https://github.com/QuarkTheAwesome" + }, + { + "name": "SuperMarioDaBom", + "caption": "控制台等系统研究", + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "name": "Jip Fr", + "caption": "网络开发主管", + "picture": "https://github.com/jipfr.png", + "github": "https://github.com/jipfr" + }, + { + "name": "monty", + "caption": "网络开发", + "picture": "https://github.com/ashmonty.png", + "github": "https://github.com/ashmonty" + }, + { + "name": "mrjvs", + "caption": "设计师", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + } + ] + }, + "specialThanks": { + "title": "特别感谢", + "text": "没有他们,Pretendo 就不会是今天的样子。", + "people": [ + { + "name": "superwhiskers", + "caption": "Crunch 开发", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "name": "Stary", + "caption": "3DS 开发和 NEX 解剖器", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001" + }, + { + "name": "Billy", + "caption": "保护主义者", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss" + }, + { + "name": "Shutterbug2000", + "caption": "马里奥赛车 7 和 3DS 研究", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "name": "rverse", + "caption": "Miiverse 信息共享", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, + { + "name": "Kinnay", + "special": "特别感谢", + "caption": "任天堂数据结构研究", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Mii 编辑器和 Juxt 反应的图标", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "GitHub 贡献者", + "caption": "本地化和其他贡献", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] + }, + "discordJoin": { + "title": "得到我们的动态与更新", + "text": "加入我们的 Discord 服务器以获取该项目的最新更新。", + "widget": { + "text": "获取我们进度的实时更新", + "button": "加入服务器" + } + }, + "footer": { + "socials": "社交", + "usefulLinks": "相关链接", + "widget": { + "captions": [ + "想要知道动态?", + "加入我们的 Discord!" + ], + "button": "现在加入!" + } + }, + "progressPage": { + "title": "我们的进度", + "description": "检查项目进度和目标! (大约每小时更新一次,不反映所有项目目标或进度)" + }, + "blogPage": { + "title": "博客", + "description": "压缩块的最新更新。如果您想看到更频繁的更新,请考虑在 Patreon 上支持我们。", + "published": "作者", + "publishedOn": "在" + }, + "localizationPage": { + "title": "让我们本地化", + "description": "粘贴指向可公开访问的 JSON 语言环境的链接以在网站上对其进行测试", + "instructions": "查看本地化说明", + "fileInput": "要测试的文件", + "filePlaceholder": "https://a.link.to/the_file.json", + "button": "测试文件" + }, + "docs": { + "missingInLocale": "此页面在您的语言环境中不可用。请看下面的英文版本。", + "quickLinks": { + "header": "快速链接", + "links": [ + { + "header": "安装 Pretendo", + "caption": "查看设置说明" + }, + { + "header": "有错误吗?", + "caption": "在这里搜索" + } + ] + } + }, + "account": { + "loginForm": { + "login": "登录", + "confirmPassword": "再次输入密码", + "username": "用户名", + "detailsPrompt": "请在下面输入您的账号信息", + "register": "注册", + "password": "密码", + "email": "邮件", + "miiName": "Mii 账号名", + "forgotPassword": "忘记了密码?", + "registerPrompt": "没有一个账号?", + "loginPrompt": "已经有了一个账号?" + }, + "settings": { + "settingCards": { + "newsletterPrompt": "通过电子邮件接收项目更新(您可以随时选择退出)", + "discord": "Discord 聊天", + "connectedToDiscord": "连接Discord的身份:", + "removeDiscord": "移除Discord账号", + "passwordPrompt": "输入您的 PNID 密码以下载 Cemu 文件", + "profile": "账号信息", + "nickname": "昵称", + "birthDate": "出生日期", + "gender": "性别", + "country": "国家/地区", + "timezone": "时区", + "serverEnv": "服务器环境", + "production": "制作", + "beta": "Beta 版本", + "upgradePrompt": "Beta 服务器仅供 Beta 测试人员使用。
要成为 Beta 测试人员,请升级到更高的帐户等级。", + "hasAccessPrompt": "您当前的等级为您提供 Beta 服务器访问权限。耶!", + "signInSecurity": "登录和安全", + "email": "邮件", + "password": "密码", + "passwordResetNotice": "在修改密码后,所有登入的系统会登出。", + "signInHistory": "登录历史", + "fullSignInHistory": "查看所有登录活动", + "otherSettings": "其他设置", + "noDiscordLinked": "没有连接的Discord账号。", + "linkDiscord": "连接Discord账号", + "newsletter": "通讯" + }, + "downloadFiles": "下载账号文件", + "downloadFilesDescription": "(无法在任天堂网络上使用)", + "upgrade": "升级账号" + }, + "accountLevel": [ + "标准", + "测试人员", + "版主", + "开发人员" + ], + "banned": "禁止" + }, + "upgrade": { + "title": "升级", + "description": "达到每月目标将使 Pretendo 成为全职工作,以更快的速度提供更高质量的更新。", + "month": "月", + "tierSelectPrompt": "选择一个级别", + "unsub": "退订", + "unsubPrompt": "您确定要退订 tiername 吗?您将无法使用与该等级相关的福利。", + "unsubConfirm": "退订", + "changeTier": "修改级别", + "changeTierPrompt": "您确定要取消订阅 oldtiername 并订阅 newtiername 吗?", + "changeTierConfirm": "修改级别", + "back": "退回" + }, + "donation": { + "progress": "$${totd} $${goald}/月,${perc}% 的每月目标。", + "upgradePush": "要成为订阅者并获得超值福利,请访问升级页面。" + }, + "modals": { + "cancel": "取消", + "confirm": "确认" + } +} diff --git a/locales/zh_Hant.json b/locales/zh_Hant.json new file mode 100644 index 0000000..64f15f4 --- /dev/null +++ b/locales/zh_Hant.json @@ -0,0 +1,5 @@ +{ + "nav": { + "about": "關于" + } +} diff --git a/package-lock.json b/package-lock.json index 7dd0879..e6ab64d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7395 +1,8090 @@ { - "name": "website", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "website", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "adm-zip": "^0.5.9", - "browserify": "^17.0.0", - "colors": "^1.4.0", - "cookie-parser": "^1.4.5", - "discord-oauth2": "github:ryanblenis/discord-oauth2", - "express": "^4.17.1", - "express-handlebars": "^5.3.1", - "express-locale": "^2.0.0", - "fs-extra": "^9.1.0", - "got": "^11.8.2", - "gray-matter": "^4.0.3", - "kaitai-struct": "^0.9.0", - "marked": "^4.0.10", - "morgan": "^1.10.0", - "trello": "^0.11.0", - "uuid": "^8.3.2" - }, - "devDependencies": { - "eslint": "^7.32.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "node_modules/@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "node_modules/@types/keyv": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", - "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", - "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adm-zip": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", - "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/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==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "node_modules/browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "dependencies": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - }, - "bin": { - "browser-pack": "bin/cmd.js" - } - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserify/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "node_modules/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=" - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", - "dependencies": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - } - }, - "node_modules/combine-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "optional": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-parser": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", - "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", - "dependencies": { - "cookie": "0.4.0", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", - "dependencies": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" - }, - "bin": { - "deps-sort": "bin/cmd.js" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dependencies": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/discord-oauth2": { - "version": "2.9.0", - "resolved": "git+ssh://git@github.com/ryanblenis/discord-oauth2.git#ca0093d5b34efdd6ec2ce45a4a2678b3282cea31", - "integrity": "sha512-J3w3djV6I4PtnLp3lZga4m41DPjqXtyETV8rMG9FSIev5i5mxpkrsfXRni3Jc+qYxH86LcLa7zUwnWHHXpcu0g==", - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/elliptic/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-handlebars": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-5.3.5.tgz", - "integrity": "sha512-r9pzDc94ZNJ7FVvtsxLfPybmN0eFAUnR61oimNPRpD0D7nkLcezrkpZzoXS5TI75wYHRbflPLTU39B62pwB4DA==", - "dependencies": { - "glob": "^7.2.0", - "graceful-fs": "^4.2.8", - "handlebars": "^4.7.7" - }, - "engines": { - "node": ">=v10.24.1" - } - }, - "node_modules/express-locale": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/express-locale/-/express-locale-2.0.0.tgz", - "integrity": "sha512-SUwsgOTV8lplAkgyfKSwKH3ZVSKUrAa+b48acPGXpwWX211WZ/BYWX2WcZO57+xLOqPYb6rSNpWCFnhGrt0moA==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/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=", - "dev": true - }, - "node_modules/get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got": { - "version": "11.8.2", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", - "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/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=" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "dependencies": { - "source-map": "~0.5.3" - } - }, - "node_modules/inline-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "dependencies": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - }, - "bin": { - "insert-module-globals": "bin/cmd.js" - } - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/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=", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/kaitai-struct": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/kaitai-struct/-/kaitai-struct-0.9.0.tgz", - "integrity": "sha512-mfoBu9+IGqaY3ykG1TyAy9omOAZWtheqESQOvo/HKIQVTz+gRPVCNBnhjbO+8wAQ77RD33wYvLBWmITuXIviQg==" - }, - "node_modules/keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dependencies": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/marked": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", - "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dependencies": { - "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "dependencies": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "module-deps": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - } - }, - "node_modules/restler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/restler/-/restler-3.3.0.tgz", - "integrity": "sha1-+TpZteG8LFrQwrlz94EpshgbYHY=", - "dependencies": { - "iconv-lite": "0.2.11", - "qs": "1.2.0", - "xml2js": "0.4.0", - "yaml": "0.2.3" - }, - "engines": { - "node": ">= 0.10.x" - } - }, - "node_modules/restler/node_modules/iconv-lite": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/restler/node_modules/qs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.0.tgz", - "integrity": "sha1-7Qeb4oaCFH5v2aNMwrDB4OxkU+4=" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/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==" - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dependencies": { - "minimist": "^1.1.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "dependencies": { - "acorn-node": "^1.2.0" - } - }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "dependencies": { - "process": "~0.11.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/trello": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/trello/-/trello-0.11.0.tgz", - "integrity": "sha512-WMjfSTA+ybGnd36ZoMX7Ia7wfpU9KP2lsafv9mjLwFcE1ECp8b9/rX3uW4ivNO7jVLnHRyQ1pHsirbMvK0Ix2Q==", - "dependencies": { - "es6-promise": "~3.0.2", - "object-assign": "~4.1.0", - "restler": "~3.3.0" - }, - "engines": { - "node": ">= 0.10.x" - } - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "node_modules/uglify-js": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", - "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", - "optional": true, - "dependencies": { - "commander": "~2.20.3" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - }, - "bin": { - "undeclared-identifiers": "bin.js" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/xml2js": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.0.tgz", - "integrity": "sha1-Ek/EEUtBKcgQgA7LKshs8lRiy5o=", - "dependencies": { - "sax": "0.5.x", - "xmlbuilder": ">=0.4.2" - } - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-0.2.3.tgz", - "integrity": "sha1-tUUOkudu82td0k42YAkeuu7z5cc=", - "engines": { - "node": "*" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.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==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "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=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "@types/keyv": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", - "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", - "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "requires": { - "@types/node": "*" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - }, - "adm-zip": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", - "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - } - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "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": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "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" - } - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "requires": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - } - }, - "browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "requires": { - "resolve": "^1.17.0" - } - }, - "browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "requires": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "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" - } - }, - "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": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "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": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "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": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "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": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - } - }, - "cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", - "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "optional": true - }, - "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": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "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==" - }, - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-parser": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", - "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", - "requires": { - "cookie": "0.4.0", - "cookie-signature": "1.0.6" - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "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" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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" - } - }, - "dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" - }, - "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" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - } - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - }, - "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" - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", - "requires": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" - } - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "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=" - }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "discord-oauth2": { - "version": "git+ssh://git@github.com/ryanblenis/discord-oauth2.git#ca0093d5b34efdd6ec2ce45a4a2678b3282cea31", - "integrity": "sha512-J3w3djV6I4PtnLp3lZga4m41DPjqXtyETV8rMG9FSIev5i5mxpkrsfXRni3Jc+qYxH86LcLa7zUwnWHHXpcu0g==", - "from": "discord-oauth2@github:ryanblenis/discord-oauth2" - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "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==" - }, - "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" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "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.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "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.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "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" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "express-handlebars": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-5.3.5.tgz", - "integrity": "sha512-r9pzDc94ZNJ7FVvtsxLfPybmN0eFAUnR61oimNPRpD0D7nkLcezrkpZzoXS5TI75wYHRbflPLTU39B62pwB4DA==", - "requires": { - "glob": "^7.2.0", - "graceful-fs": "^4.2.8", - "handlebars": "^4.7.7" - } - }, - "express-locale": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/express-locale/-/express-locale-2.0.0.tgz", - "integrity": "sha512-SUwsgOTV8lplAkgyfKSwKH3ZVSKUrAa+b48acPGXpwWX211WZ/BYWX2WcZO57+xLOqPYb6rSNpWCFnhGrt0moA==" - }, - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "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=", - "dev": true - }, - "get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "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-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "got": { - "version": "11.8.2", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", - "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "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-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "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" - } - }, - "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" - } - }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "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=" - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "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=" - }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "requires": { - "source-map": "~0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "requires": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^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-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^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=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "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=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "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=", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "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" - } - }, - "kaitai-struct": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/kaitai-struct/-/kaitai-struct-0.9.0.tgz", - "integrity": "sha512-mfoBu9+IGqaY3ykG1TyAy9omOAZWtheqESQOvo/HKIQVTz+gRPVCNBnhjbO+8wAQ77RD33wYvLBWmITuXIviQg==" - }, - "keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", - "requires": { - "json-buffer": "3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "requires": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "marked": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", - "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==" - }, - "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" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "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": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "requires": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "requires": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", - "requires": { - "path-platform": "~0.11.15" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" - }, - "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=" - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "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=" - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "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.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "restler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/restler/-/restler-3.3.0.tgz", - "integrity": "sha1-+TpZteG8LFrQwrlz94EpshgbYHY=", - "requires": { - "iconv-lite": "0.2.11", - "qs": "1.2.0", - "xml2js": "0.4.0", - "yaml": "0.2.3" - }, - "dependencies": { - "iconv-lite": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=" - }, - "qs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.0.tgz", - "integrity": "sha1-7Qeb4oaCFH5v2aNMwrDB4OxkU+4=" - } - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "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.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "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==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://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" - } - }, - "shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", - "requires": { - "fast-safe-stringify": "^2.0.7" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.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==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "requires": { - "minimist": "^1.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "requires": { - "acorn-node": "^1.2.0" - } - }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://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" - } - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "requires": { - "process": "~0.11.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "trello": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/trello/-/trello-0.11.0.tgz", - "integrity": "sha512-WMjfSTA+ybGnd36ZoMX7Ia7wfpU9KP2lsafv9mjLwFcE1ECp8b9/rX3uW4ivNO7jVLnHRyQ1pHsirbMvK0Ix2Q==", - "requires": { - "es6-promise": "~3.0.2", - "object-assign": "~4.1.0", - "restler": "~3.3.0" - } - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uglify-js": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", - "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", - "optional": true, - "requires": { - "commander": "~2.20.3" - } - }, - "umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "requires": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "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=" - } - } - }, - "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xml2js": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.0.tgz", - "integrity": "sha1-Ek/EEUtBKcgQgA7LKshs8lRiy5o=", - "requires": { - "sax": "0.5.x", - "xmlbuilder": ">=0.4.2" - } - }, - "xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-0.2.3.tgz", - "integrity": "sha1-tUUOkudu82td0k42YAkeuu7z5cc=" - } - } + "name": "website", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "website", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@discordjs/rest": "^0.5.0", + "adm-zip": "^0.5.9", + "browserify": "^17.0.0", + "colors": "^1.4.0", + "cookie-parser": "^1.4.5", + "discord-api-types": "^0.36.1", + "discord-oauth2": "github:ryanblenis/discord-oauth2", + "express": "^4.17.1", + "express-handlebars": "^5.3.1", + "express-locale": "^2.0.0", + "fs-extra": "^9.1.0", + "got": "^11.8.5", + "graphql-request": "^4.3.0", + "gray-matter": "^4.0.3", + "kaitai-struct": "^0.9.0", + "marked": "^4.0.10", + "mii-js": "github:PretendoNetwork/mii-js#v1.0.4", + "mongoose": "^6.4.0", + "morgan": "^1.10.0", + "nodemailer": "^6.7.5", + "stripe": "^9.9.0", + "uuid": "^8.3.2" + }, + "devDependencies": { + "eslint": "^7.32.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.5.0.tgz", + "integrity": "sha512-S4E1YNz1UxgUfMPpMeqzPPkCfXE877zOsvKM5WEmwIhcpz1PQV7lzqlEOuz194UuwOJLLjQFBgQELnQfCX9UfA==", + "dependencies": { + "@discordjs/collection": "^0.7.0", + "@sapphire/async-queue": "^1.3.1", + "@sapphire/snowflake": "^3.2.2", + "discord-api-types": "^0.33.3", + "tslib": "^2.4.0", + "undici": "^5.4.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest/node_modules/discord-api-types": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "node_modules/@sapphire/async-queue": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", + "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", + "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", + "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "node_modules/@types/keyv": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", + "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", + "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bit-buffer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/bit-buffer/-/bit-buffer-0.2.5.tgz", + "integrity": "sha512-x1yGnmXvFg6e3DiyRztElbcn1bsCTFSoM/ncAzY62uE0JdTl5xlKJd0ooqLYoPbhdsnpehSIQrdIvclcZJYwiA==" + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dependencies": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + }, + "bin": { + "browser-pack": "bin/cmd.js" + } + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/bson": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz", + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/bson/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/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=" + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/combine-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", + "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", + "dependencies": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dependencies": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + }, + "bin": { + "deps-sort": "bin/cmd.js" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dependencies": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/discord-api-types": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.1.tgz", + "integrity": "sha512-PTDinUU574hXA9Ko9wrftL1iww1raNiRVKjuPIWQ5Li1g7vQPArpZWw9x01kh/IXLPdzSAJ6H8T0eAYzxzFzIg==" + }, + "node_modules/discord-oauth2": { + "version": "2.9.0", + "resolved": "git+ssh://git@github.com/ryanblenis/discord-oauth2.git#ca0093d5b34efdd6ec2ce45a4a2678b3282cea31", + "integrity": "sha512-J3w3djV6I4PtnLp3lZga4m41DPjqXtyETV8rMG9FSIev5i5mxpkrsfXRni3Jc+qYxH86LcLa7zUwnWHHXpcu0g==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/elliptic/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-handlebars": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-5.3.5.tgz", + "integrity": "sha512-r9pzDc94ZNJ7FVvtsxLfPybmN0eFAUnR61oimNPRpD0D7nkLcezrkpZzoXS5TI75wYHRbflPLTU39B62pwB4DA==", + "dependencies": { + "glob": "^7.2.0", + "graceful-fs": "^4.2.8", + "handlebars": "^4.7.7" + }, + "engines": { + "node": ">=v10.24.1" + } + }, + "node_modules/express-locale": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/express-locale/-/express-locale-2.0.0.tgz", + "integrity": "sha512-SUwsgOTV8lplAkgyfKSwKH3ZVSKUrAa+b48acPGXpwWX211WZ/BYWX2WcZO57+xLOqPYb6rSNpWCFnhGrt0moA==" + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", + "engines": { + "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/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=", + "dev": true + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/graphql": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", + "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-request": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz", + "integrity": "sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==", + "dependencies": { + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" + }, + "peerDependencies": { + "graphql": "14 - 16" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/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=" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dependencies": { + "source-map": "~0.5.3" + } + }, + "node_modules/inline-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dependencies": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "bin": { + "insert-module-globals": "bin/cmd.js" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/kaitai-struct": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/kaitai-struct/-/kaitai-struct-0.9.0.tgz", + "integrity": "sha512-mfoBu9+IGqaY3ykG1TyAy9omOAZWtheqESQOvo/HKIQVTz+gRPVCNBnhjbO+8wAQ77RD33wYvLBWmITuXIviQg==" + }, + "node_modules/kareem": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", + "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + }, + "node_modules/keyv": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", + "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dependencies": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/marked": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mii-js": { + "version": "1.0.4", + "resolved": "git+ssh://git@github.com/PretendoNetwork/mii-js.git#5d8eb8013514a13b0df6eb4a5bfd8b5a63fb9861", + "license": "GNU AFFERO GPLV3", + "dependencies": { + "bit-buffer": "^0.2.5" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dependencies": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "module-deps": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/mongodb": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", + "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "dependencies": { + "bson": "^4.6.3", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.5.2", + "socks": "^2.6.2" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.0.tgz", + "integrity": "sha512-eBDrueap1Zx3qFrcYylTiqTFlL5iTEaYAxoDF1MSRdipwAzChQRMJve+vxHtxPhI2q5tmf9RYHfZwXfTUHPd3g==", + "dependencies": { + "bson": "^4.6.2", + "kareem": "2.4.1", + "mongodb": "4.7.0", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/nodemailer": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.5.tgz", + "integrity": "sha512-6VtMpwhsrixq1HDYSBBHvW0GwiWawE75dS3oal48VqRhUvKJNnKnJo2RI/bCVQubj1vgrgscMNW4DHaD6xtMCg==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dependencies": { + "path-platform": "~0.11.15" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/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==" + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stripe": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.9.0.tgz", + "integrity": "sha512-UBuHzKoEaHnTv2h65cIcYE0vse7at8CFlwjl/KS8I7piekMKa1lRTA5R2O4eXMp5wllWQbPF/UoLzTfjjcdBqA==", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.10.3" + }, + "engines": { + "node": "^8.1 || >=10.*" + } + }, + "node_modules/stripe/node_modules/qs": { + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dependencies": { + "minimist": "^1.1.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dependencies": { + "acorn-node": "^1.2.0" + } + }, + "node_modules/table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dependencies": { + "process": "~0.11.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/uglify-js": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", + "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", + "optional": true, + "dependencies": { + "commander": "~2.20.3" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "bin": { + "umd": "bin/cli.js" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dependencies": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + }, + "bin": { + "undeclared-identifiers": "bin.js" + } + }, + "node_modules/undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==", + "engines": { + "node": ">=12.18" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "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=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" + }, + "@discordjs/rest": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.5.0.tgz", + "integrity": "sha512-S4E1YNz1UxgUfMPpMeqzPPkCfXE877zOsvKM5WEmwIhcpz1PQV7lzqlEOuz194UuwOJLLjQFBgQELnQfCX9UfA==", + "requires": { + "@discordjs/collection": "^0.7.0", + "@sapphire/async-queue": "^1.3.1", + "@sapphire/snowflake": "^3.2.2", + "discord-api-types": "^0.33.3", + "tslib": "^2.4.0", + "undici": "^5.4.0" + }, + "dependencies": { + "discord-api-types": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@sapphire/async-queue": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", + "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==" + }, + "@sapphire/snowflake": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.2.tgz", + "integrity": "sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==" + }, + "@sindresorhus/is": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", + "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "@types/keyv": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", + "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, + "@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "@types/whatwg-url": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "adm-zip": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", + "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + } + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "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": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "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" + } + }, + "bit-buffer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/bit-buffer/-/bit-buffer-0.2.5.tgz", + "integrity": "sha512-x1yGnmXvFg6e3DiyRztElbcn1bsCTFSoM/ncAzY62uE0JdTl5xlKJd0ooqLYoPbhdsnpehSIQrdIvclcZJYwiA==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "requires": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "requires": { + "resolve": "^1.17.0" + } + }, + "browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "requires": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "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" + } + }, + "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": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "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": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "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": { + "pako": "~1.0.5" + } + }, + "bson": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz", + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==", + "requires": { + "buffer": "^5.6.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "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=" + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + }, + "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": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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==" + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-parser": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", + "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "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" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "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" + } + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" + }, + "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" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "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" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "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=" + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "discord-api-types": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.1.tgz", + "integrity": "sha512-PTDinUU574hXA9Ko9wrftL1iww1raNiRVKjuPIWQ5Li1g7vQPArpZWw9x01kh/IXLPdzSAJ6H8T0eAYzxzFzIg==" + }, + "discord-oauth2": { + "version": "git+ssh://git@github.com/ryanblenis/discord-oauth2.git#ca0093d5b34efdd6ec2ce45a4a2678b3282cea31", + "integrity": "sha512-J3w3djV6I4PtnLp3lZga4m41DPjqXtyETV8rMG9FSIev5i5mxpkrsfXRni3Jc+qYxH86LcLa7zUwnWHHXpcu0g==", + "from": "discord-oauth2@github:ryanblenis/discord-oauth2" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "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==" + }, + "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" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "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.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "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" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "express-handlebars": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-5.3.5.tgz", + "integrity": "sha512-r9pzDc94ZNJ7FVvtsxLfPybmN0eFAUnR61oimNPRpD0D7nkLcezrkpZzoXS5TI75wYHRbflPLTU39B62pwB4DA==", + "requires": { + "glob": "^7.2.0", + "graceful-fs": "^4.2.8", + "handlebars": "^4.7.7" + } + }, + "express-locale": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/express-locale/-/express-locale-2.0.0.tgz", + "integrity": "sha512-SUwsgOTV8lplAkgyfKSwKH3ZVSKUrAa+b48acPGXpwWX211WZ/BYWX2WcZO57+xLOqPYb6rSNpWCFnhGrt0moA==" + }, + "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" + } + }, + "extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "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=", + "dev": true + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "graphql": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz", + "integrity": "sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==", + "peer": true + }, + "graphql-request": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz", + "integrity": "sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==", + "requires": { + "cross-fetch": "^3.1.5", + "extract-files": "^9.0.0", + "form-data": "^3.0.0" + } + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "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-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "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" + } + }, + "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" + } + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "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=" + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "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=" + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "requires": { + "source-map": "~0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "requires": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^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-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^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=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "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=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "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=", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "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" + } + }, + "kaitai-struct": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/kaitai-struct/-/kaitai-struct-0.9.0.tgz", + "integrity": "sha512-mfoBu9+IGqaY3ykG1TyAy9omOAZWtheqESQOvo/HKIQVTz+gRPVCNBnhjbO+8wAQ77RD33wYvLBWmITuXIviQg==" + }, + "kareem": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", + "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + }, + "keyv": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", + "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "requires": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "marked": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==" + }, + "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" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mii-js": { + "version": "git+ssh://git@github.com/PretendoNetwork/mii-js.git#5d8eb8013514a13b0df6eb4a5bfd8b5a63fb9861", + "from": "mii-js@github:PretendoNetwork/mii-js#v1.0.4", + "requires": { + "bit-buffer": "^0.2.5" + } + }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "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.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "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": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "requires": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "mongodb": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", + "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "requires": { + "bson": "^4.6.3", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.5.2", + "saslprep": "^1.0.3", + "socks": "^2.6.2" + } + }, + "mongodb-connection-string-url": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "mongoose": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.4.0.tgz", + "integrity": "sha512-eBDrueap1Zx3qFrcYylTiqTFlL5iTEaYAxoDF1MSRdipwAzChQRMJve+vxHtxPhI2q5tmf9RYHfZwXfTUHPd3g==", + "requires": { + "bson": "^4.6.2", + "kareem": "2.4.1", + "mongodb": "4.7.0", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" + }, + "mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "requires": { + "debug": "4.x" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "nodemailer": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.5.tgz", + "integrity": "sha512-6VtMpwhsrixq1HDYSBBHvW0GwiWawE75dS3oal48VqRhUvKJNnKnJo2RI/bCVQubj1vgrgscMNW4DHaD6xtMCg==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" + }, + "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=" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "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==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "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=" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "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==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://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" + } + }, + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "requires": { + "fast-safe-stringify": "^2.0.7" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sift": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "stripe": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-9.9.0.tgz", + "integrity": "sha512-UBuHzKoEaHnTv2h65cIcYE0vse7at8CFlwjl/KS8I7piekMKa1lRTA5R2O4eXMp5wllWQbPF/UoLzTfjjcdBqA==", + "requires": { + "@types/node": ">=8.1.0", + "qs": "^6.10.3" + }, + "dependencies": { + "qs": { + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "^1.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "requires": { + "acorn-node": "^1.2.0" + } + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://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" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "~0.11.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", + "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", + "optional": true, + "requires": { + "commander": "~2.20.3" + } + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==" + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "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=" + } + } + }, + "util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } } diff --git a/package.json b/package.json index 50df863..e3896dd 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,46 @@ { - "name": "website", - "version": "1.0.0", - "description": "", - "main": "src/server.js", - "scripts": { - "start": "browserify ./public/assets/js/miieditor.js -o ./public/assets/js/miieditor.bundled.js && node src/server.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/PretendoNetwork/website.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/PretendoNetwork/website/issues" - }, - "homepage": "https://github.com/PretendoNetwork/website#readme", - "dependencies": { - "adm-zip": "^0.5.9", - "browserify": "^17.0.0", - "colors": "^1.4.0", - "cookie-parser": "^1.4.5", - "discord-oauth2": "github:ryanblenis/discord-oauth2", - "express": "^4.17.1", - "express-handlebars": "^5.3.1", - "express-locale": "^2.0.0", - "fs-extra": "^9.1.0", - "got": "^11.8.2", - "gray-matter": "^4.0.3", - "kaitai-struct": "^0.9.0", - "marked": "^4.0.10", - "morgan": "^1.10.0", - "trello": "^0.11.0", - "uuid": "^8.3.2" - }, - "devDependencies": { - "eslint": "^7.32.0" - } + "name": "website", + "version": "1.0.0", + "description": "", + "main": "src/server.js", + "scripts": { + "start": "browserify ./public/assets/js/miieditor.js -o ./public/assets/js/miieditor.bundled.js && node src/server.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/PretendoNetwork/website.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/PretendoNetwork/website/issues" + }, + "homepage": "https://github.com/PretendoNetwork/website#readme", + "dependencies": { + "@discordjs/rest": "^0.5.0", + "adm-zip": "^0.5.9", + "browserify": "^17.0.0", + "colors": "^1.4.0", + "cookie-parser": "^1.4.5", + "discord-api-types": "^0.36.1", + "discord-oauth2": "github:ryanblenis/discord-oauth2", + "express": "^4.17.1", + "express-handlebars": "^5.3.1", + "express-locale": "^2.0.0", + "fs-extra": "^9.1.0", + "got": "^11.8.5", + "graphql-request": "^4.3.0", + "gray-matter": "^4.0.3", + "kaitai-struct": "^0.9.0", + "marked": "^4.0.10", + "mii-js": "github:PretendoNetwork/mii-js#v1.0.4", + "mongoose": "^6.4.0", + "morgan": "^1.10.0", + "nodemailer": "^6.7.5", + "stripe": "^9.9.0", + "uuid": "^8.3.2" + }, + "devDependencies": { + "eslint": "^7.32.0" + } } diff --git a/public/assets/css/account.css b/public/assets/css/account.css index dbb4739..47da37e 100644 --- a/public/assets/css/account.css +++ b/public/assets/css/account.css @@ -1,279 +1,344 @@ /* Removing until it's done */ -.setting-card a.edit, .sign-in-history a { - display: none; + display: none; } .account-wrapper { - display: grid; - column-gap: 48px; - margin-top: 80px; - color: var(--text-secondary); + display: grid; + column-gap: 48px; + margin-top: 80px; + color: var(--text-shade-1); } /* Account settings sidebar */ .account-sidebar .user { - text-align: center; - margin: 55px auto; - width: fit-content; + text-align: center; + margin: 55px auto; + width: fit-content; } .account-sidebar .user .miiname { - font-size: 1.2rem; - color: var(--text); - margin: 8px 0 4px; + font-size: 1.2rem; + color: var(--text-shade-3); + margin: 8px 0 4px; } .account-sidebar .user .username { - margin: 0px; + margin: 0; } +.account-sidebar .user .tier-name { + margin: 12px 0; + line-height: 1.2em; + border-radius: 1.2em; + border-width: 2px; + border-style: solid; + padding: 4px 16px; +} + +.account-sidebar .user .tier-level-0, +.account-sidebar .user .access-level-0 { + background: #2a2f50; + color: var(--text-shade-1); + border-color: #383f6b; +} +.account-sidebar .user .tier-level-1 { + background: rgba(255, 132, 132, 0.2); + color: #FF8484; + border-color: rgba(255, 132, 132, 0.8); +} +.account-sidebar .user .tier-level-2 { + background: rgba(89, 201, 165, 0.3); + color:#59c9a5; + border-color: #59c9a5; +} +.account-sidebar .user .tier-level-3 { + background: rgba(202, 177, 251, 0.3); + color:var(--accent-shade-3); + border-color: var(--accent-shade-3); +} +.account-sidebar .user .access-level-banned { + background: rgba(255, 63, 0, 0.1); + color:#FF3F00; + border-color: rgba(255, 63, 0, 0.8); +} +.account-sidebar .user .access-level-1 { + background: rgba(100, 247, 239, 0.3); + color: #64F7EF; + border-color: #64F7EF; +} +.account-sidebar .user .access-level-2 { + background: rgba(255, 199, 89, 0.3); + color: #FFC759; + border-color: #FFC759; +} +.account-sidebar .user .access-level-3 { + background: rgba(90, 255, 21, 0.3); + color:#5AFF15; + border-color: #5AFF15; +} + +.account-sidebar .user a.mii { + position: relative; + display: block; + width: 128px; + height: 128px; + overflow: hidden; + border-radius: 100%; + background: var(--bg-shade-3); +} +.account-sidebar .user a.mii::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: no-repeat center/40% url("/assets/images/edit.svg"), rgba(55, 60, 101, 0.7); + opacity: 0; + transition: opacity 150ms; +} +.account-sidebar .user a.mii:hover::after { + opacity: 1; +} + .account-sidebar .user .mii { - width: 128px; - height: 128px; - border-radius: 100%; - background: var(--btn-secondary); + width: 100%; + height: 100%; } -.account-sidebar .user #download-cemu-files { - display: flex; - flex-flow: column; - align-items: center; - padding: 24px; - background: #383f6b; - margin: 24px 0 0; - text-decoration: none; +.account-sidebar .buttons a { + display: flex; + flex-flow: column; + align-items: center; + padding: 20px 24px; + margin: 20px 0 0; + text-decoration: none; + text-align: center; } -.account-sidebar .user #download-cemu-files p.download-caption { - margin: 15px 0 0; +.account-sidebar .buttons a svg { + margin-bottom: 16px; } -.account-sidebar .user p.cemu-warning { - margin: 4px 0 0; - font-size: 0.7rem; - color: var(--text-secondary); +.account-sidebar .buttons a p.caption { + margin: 0; +} +.account-sidebar .buttons p.cemu-warning { + margin: 4px 0 0; + font-size: 0.7rem; + color: var(--text-shade-1); } /* Settings */ .settings-wrapper { - display: grid; - grid-column-start: 2; - grid-template-columns: 1fr 1fr; - column-gap: 20px; + display: grid; + grid-column-start: 2; + grid-template-columns: 1fr 1fr; + column-gap: 20px; } .settings-wrapper a { - color: #9d6ff3; - text-decoration: none; - font-weight: bold; + color: var(--accent-shade-1); + text-decoration: none; + font-weight: bold; } .settings-wrapper a:hover { - text-decoration: underline; + text-decoration: underline; } .settings-wrapper h2.section-header { - margin-top: 40px; - grid-column: 1 / 3; - color: var(--text); + margin-top: 40px; + grid-column: 1 / 3; + color: var(--text-shade-3); } .setting-card { - display: grid; - grid-template-rows: 35px repeat(2, auto); - row-gap: 24px; - position: relative; - border-radius: 10px; - background: #2a2f50; - padding: 48px 60px; + display: grid; + grid-template-rows: 35px repeat(2, auto); + row-gap: 24px; + position: relative; + border-radius: 10px; + background: var(--bg-shade-2); + padding: 48px 60px; } .setting-card * { - margin: 0; + margin: 0; } .setting-card .edit { - color: var(--text-secondary); - background: #383f6b; - border-radius: 100%; - position: absolute; - top: 42px; - right: 48px; - width: 24px; - height: 24px; - padding: 12px; + color: var(--text-shade-1); + background: var(--bg-shade-3); + border-radius: 100%; + position: absolute; + top: 42px; + right: 48px; + width: 24px; + height: 24px; + padding: 12px; } .setting-card .edit:hover { - background: #383f6b; - color: var(--text); + background: var(--bg-shade-3); + color: var(--text-shade-3); +} +.setting-card .edit svg { + pointer-events: none; } .setting-card .header { - color: var(--text); + color: var(--text-shade-3); } .setting-card .setting-list { - display: grid; - grid-template-columns: repeat(2, auto); - gap: 24px; - list-style: none; - padding: 0; + display: grid; + grid-template-columns: repeat(2, auto); + gap: 24px; + list-style: none; + padding: 0; } .setting-card .setting-list p.label { - color: var(--text); - margin-bottom: 4px; + color: var(--text-shade-3); + margin-bottom: 4px; } fieldset { - height: min-content; - padding: 0; - border: none; -} -fieldset:disabled form label { - cursor: not-allowed; + position: relative; + height: min-content; + padding: 0; + border: none; } .setting-card .server-selection { - display: flex; - border-radius: 5px; - overflow: hidden; - background: #383f6b; + display: flex; + border-radius: 5px; + overflow: hidden; + background: var(--bg-shade-3); } .setting-card .server-selection input { - display: none; + display: none; } .server-selection input + label { - display: flex; - flex-flow: column; - align-items: center; - flex: 50%; - color: var(--text-secondary); - padding: 40px; - justify-content: space-between; - cursor: pointer; + display: flex; + flex-flow: column; + align-items: center; + flex: 50%; + color: var(--text-shade-1); + padding: 40px; + justify-content: space-between; + cursor: pointer; } .server-selection input + label h2 { - margin-top: 12px; - color: var(--text-secondary); + margin-top: 12px; + color: var(--text-shade-1); } .server-selection input:checked + label, .server-selection input:checked + label h2 { - background: var(--theme); - color: var(--text); + background: var(--accent-shade-0); + color: var(--text-shade-3); } -.setting-card #remove-discord-connection { - width: 100%; - padding: 12px 48px; - cursor: pointer; - background: #383f6b; +.setting-card #link-discord-account { + width: 100%; + padding: 12px 48px; + cursor: pointer; + background: var(--bg-shade-3); } -.setting-card.sign-in-history a button { - width: 100%; - padding: 12px 48px; - cursor: pointer; - background: #383f6b; -} -.setting-card input[type="checkbox"] { - appearance: none; - -webkit-appearance: none; - background: #383f6b; - padding: 12px; - margin: 4px; - margin-left: 0; - border-radius: 4px; - vertical-align: -65%; -} -.setting-card input[type="checkbox"]:checked { - background: no-repeat center/contain url(../images/check.svg), var(--theme); +.setting-card button { + width: 100%; + height: fit-content; + padding: 12px 48px; + align-self: flex-end; + cursor: pointer; + background: var(--bg-shade-3); } .setting-card.span-both-columns { - grid-column: 1 / span 2; + grid-column: 1 / span 2; } @keyframes banner-notice { - 0% { - top: -150px; - } - 20% { - top: 35px; - } - 80% { - top: 35px; - } - 100% { - top: -150px; - } + 0% { + top: -150px; + } + 20% { + top: 35px; + } + 80% { + top: 35px; + } + 100% { + top: -150px; + } } .banner-notice { - display: flex; - justify-content: center; - position: fixed; - top: -150px; - width: 100%; - animation: banner-notice 5s; + display: flex; + justify-content: center; + position: fixed; + top: -150px; + width: 100%; + animation: banner-notice 5s; } .banner-notice div { - padding: 4px 36px; - border-radius: 5px; - z-index: 3; + padding: 4px 36px; + border-radius: 5px; + z-index: 3; } .banner-notice.success div { - background: #37a985; + background: var(--green-shade-0); } .banner-notice.error div { - background: #a9375b; + background: var(--red-shade-1); } footer { - margin-top: 80px; + margin-top: 80px; } @media screen and (max-width: 1300px) { - .account-wrapper { - margin: 20px 0; - } + .account-wrapper { + margin: 20px 0; + } - .settings-wrapper { - grid-column-start: 1; - } + .settings-wrapper { + grid-column-start: 1; + } - .account-sidebar { - margin: 0; - } + .account-sidebar { + margin: 0; + } - .account-sidebar .user .mii { - width: 128px; - height: 128px; - } + .account-sidebar .user .mii { + width: 128px; + height: 128px; + } } @media screen and (max-width: 1000px) { - .settings-wrapper { - display: block; - width: 100%; - } + .settings-wrapper { + display: block; + width: 100%; + } - .setting-card { - margin-bottom: 24px; - } + .setting-card { + margin-bottom: 24px; + } } @media screen and (max-width: 550px) { - .setting-card { - padding: 24px; - width: calc(100vw - 48px); - margin-left: -5vw; - margin-right: -2.5vw; - border-radius: 0; - margin-bottom: 12px; - } - - .setting-card .edit { - top: 20px; - right: 20px; - transform: scale(0.85); - } + .setting-card { + padding: 24px; + width: calc(100vw - 48px); + margin-left: -5vw; + margin-right: -2.5vw; + border-radius: 0; + margin-bottom: 12px; + } - .setting-card .server-selection { - flex-flow: column; - } + .setting-card .edit { + top: 20px; + right: 20px; + transform: scale(0.85); + } + + .setting-card .server-selection { + flex-flow: column; + } } @media screen and (max-width: 350px) { - .setting-card .setting-list { - grid-template-columns: auto; - } -} + .setting-card .setting-list { + grid-template-columns: auto; + } +} \ No newline at end of file diff --git a/public/assets/css/aprilfools.css b/public/assets/css/aprilfools.css index 4da6b07..e55b553 100644 --- a/public/assets/css/aprilfools.css +++ b/public/assets/css/aprilfools.css @@ -1,113 +1,92 @@ .new-font { - font-family: museo-sans, sans-serif; + font-family: museo-sans, sans-serif; } .pretendo { - font-family: Poppins, Arial, Helvetica, sans-serif; - font-weight: 700; + font-family: Poppins, Arial, Helvetica, sans-serif; + font-weight: 700; } .announcement-hero { - position: relative; - text-align: center; - padding: 96px 0; - margin: 36px 0 24px; + position: relative; + text-align: center; + padding: 96px 0; + margin: 36px 0 24px; } .announcement-hero p { - font-size: 24px; - margin: 0; - margin-bottom: 24px; + font-size: 24px; + margin: 0; + margin-bottom: 24px; } .announcement-hero h1 { - font-size: 450%; - margin: 0; + font-size: 450%; + margin: 0; } .announcement-hero::before { - content: ""; - position: absolute; - width: 500vw; - height: 100%; - top: 0; - left: -50vw; - background: var(--theme); - z-index: -1; + content: ""; + position: absolute; + width: 500vw; + height: 100%; + top: 0; + left: -50vw; + background: var(--accent-shade-0); + z-index: -1; } .bro-what.subscribe { - padding-top: 0; - display: flex; + padding-top: 0; + display: flex; } .bro-what.subscribe h1 { - margin: 0; - margin-right: 12px; - width: fit-content; + margin: 0; + margin-right: 12px; + width: fit-content; } .buy-now { - margin-left:auto; + margin-left:auto; } .buy-now button { - cursor: pointer; - width: max-content; - height: 100%; + cursor: pointer; + width: max-content; + height: 100%; } .bro-what { - padding: 48px; + padding: 48px; } .bro-what a { - color: inherit; - text-decoration: none; - font-weight: 700; + color: inherit; + text-decoration: none; + font-weight: 700; } .dotted-bg { - position: relative; + position: relative; } .dotted-bg::before { - content: ""; - position: absolute; - width: 500vw; - height: 100%; - top: 0; - left: -50vw; - background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='100%25' width='100%25'%3E%3Cdefs%3E%3Cpattern id='doodad' width='6' height='6' viewBox='0 0 40 40' patternUnits='userSpaceOnUse' patternTransform=''%3E%3Crect width='100%25' height='100%25' fill='rgba(27, 31, 59,1)'/%3E%3Ccircle cx='20' cy='20' r='11' fill='rgba(103, 61, 182,0.4)'/%3E%3Cpath d='M9 20aInfinityInfinity 0 0 0InfinityNaNaInfinityInfinity 0 0 0-InfinityNaN' fill='%23ecc94b'/%3E%3C/pattern%3E%3C/defs%3E%3Crect fill='url(%23doodad)' height='200%25' width='200%25'/%3E%3C/svg%3E "); - z-index: -1; + content: ""; + position: absolute; + width: 500vw; + height: 100%; + top: 0; + left: -50vw; + background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='100%25' width='100%25'%3E%3Cdefs%3E%3Cpattern id='doodad' width='6' height='6' viewBox='0 0 40 40' patternUnits='userSpaceOnUse' patternTransform=''%3E%3Crect width='100%25' height='100%25' fill='rgba(27, 31, 59,1)'/%3E%3Ccircle cx='20' cy='20' r='11' fill='rgba(103, 61, 182,0.4)'/%3E%3Cpath d='M9 20aInfinityInfinity 0 0 0InfinityNaNaInfinityInfinity 0 0 0-InfinityNaN' fill='%23ecc94b'/%3E%3C/pattern%3E%3C/defs%3E%3Crect fill='url(%23doodad)' height='200%25' width='200%25'/%3E%3C/svg%3E "); + z-index: -1; } .footnotes { - color: var(--text-secondary); -} - -@media screen and (max-width: 1064px) { - .selected-locale .locale-names { - display: none; - } - - .selected-locale { - width: 80px; - margin-left: auto; - margin-right: 12px; - } - - .locale-dropdown { - width: fit-content; - } - - .select-box .options-container { - width: 150px; - right: 12px; - } + color: var(--text-shade-1); } @media screen and (max-width: 946px) { - header nav a:not(.keep-on-mobile) { + header nav a:not(.keep-on-mobile) { display: none; } - .announcement-hero h1 { - font-size: 350%; - } + .announcement-hero h1 { + font-size: 350%; + } } @media screen and (max-width: 724px) { @@ -126,35 +105,35 @@ margin: 0 10px; } - .announcement-hero h1 { - font-size: 250%; - } - .announcement-hero p { - font-size: 18px; - } + .announcement-hero h1 { + font-size: 250%; + } + .announcement-hero p { + font-size: 18px; + } } @media screen and (max-width: 600px) { - .bro-what.subscribe { - flex-flow: column; - } + .bro-what.subscribe { + flex-flow: column; + } - .bro-what a, - .buy-now button { - width: 100%; - } + .bro-what a, + .buy-now button { + width: 100%; + } - .bro-what a { - margin-top: 24px; - } + .bro-what a { + margin-top: 24px; + } - .announcement-hero { - padding: 72px 0; - } + .announcement-hero { + padding: 72px 0; + } } @media screen and (max-width: 480px) { - .bro-what { - padding: 36px 0; - } -} \ No newline at end of file + .bro-what { + padding: 36px 0; + } +} diff --git a/public/assets/css/blog.css b/public/assets/css/blog.css index 89f0648..ed35876 100644 --- a/public/assets/css/blog.css +++ b/public/assets/css/blog.css @@ -1,118 +1,119 @@ .blog-card { - display: flex; - flex-flow: row nowrap; - padding: 0; - margin: 0 auto; - max-width: 1000px; - margin-bottom: 30px; - text-decoration: none; - position: relative; - border-radius: 10px; - overflow: hidden; + display: flex; + flex-flow: row nowrap; + padding: 0; + margin: 0 auto; + max-width: 1000px; + margin-bottom: 30px; + text-decoration: none; + position: relative; + border-radius: 10px; + overflow: hidden; } .blog-card .post-info { - flex: 50%; - padding: 40px; - display: flex; - flex-flow: column; - color: var(--text-secondary); + flex: 50%; + padding: 40px; + display: flex; + flex-flow: column; + color: var(--text-shade-1); } .blog-card .post-info .title { - color: var(--text); - margin: 0; + color: var(--text-shade-3); + margin: 0; } .blog-card .post-info .caption { - margin: 4px 0 32px 0; + margin: 4px 0 32px 0; } .blog-card .pub-info { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: left; - margin-top: auto; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: left; + margin-top: auto; } .blog-card .pub-info .date { - font-weight: bold; - color: var(--text); + font-weight: bold; + color: var(--text-shade-3); } .blog-card .pub-info > * { - margin-right: 0.5em; - margin-top: 0.2em; + margin-right: 0.5em; + margin-top: 0.2em; } .blog-card .profile { - display: inline-grid; - grid-template-columns: 30px auto; - grid-gap: 10px; - font-weight: bold; - color: var(--text); - align-items: center; - height: 32px; - margin-right: 0.3em; + display: inline-grid; + grid-template-columns: 30px auto; + grid-gap: 10px; + font-weight: bold; + color: var(--text-shade-3); + align-items: center; + height: 32px; + margin-right: 0.3em; } .blog-card .profile img { - border-radius: 4px; - border: 1px solid var(--border); - max-width: 100%; + border-radius: 4px; + border: 1px solid var(--border); + max-width: 100%; } .blog-card .cover { - flex: 50%; - border: 3px solid #151934; - border-radius: 0 10px 10px 0; + flex: 50%; + border: 3px solid var(--bg-shade-0); + border-radius: 0 10px 10px 0; } .progress-hero a, .progress-hero a * { - color: #9d6ff3; - text-decoration: none; - font-weight: bold; + color: var(--accent-shade-1); + text-decoration: none; + font-weight: bold; } .progress-hero a:hover, .progress-hero a:hover { - text-decoration: underline; + text-decoration: underline; } .buttons { - margin: 10vh auto; - width: min-content; + margin: 10vh auto; + width: min-content; } .buttons button.secondary.icon-btn { - cursor: pointer; - width: 35px; - height: 35px; + cursor: pointer; + width: 35px; + height: 35px; + padding: 0; } footer { - margin-top: 160px; + margin-top: 160px; } @media screen and (max-width: 900px) { - .blog-card { - flex-flow: column; - } - .blog-card .post-info { - padding: 30px; - } - .blog-card .cover { - order: -1; - min-height: 250px; - border-radius: 10px 10px 0 0; - } - footer { - margin-top: 100px; - } + .blog-card { + flex-flow: column; + } + .blog-card .post-info { + padding: 30px; + } + .blog-card .cover { + order: -1; + min-height: 250px; + border-radius: 10px 10px 0 0; + } + footer { + margin-top: 100px; + } } @media screen and (max-width: 450px) { - .blog-card .cover { - min-height: 200px; - } + .blog-card .cover { + min-height: 200px; + } } diff --git a/public/assets/css/blogpost.css b/public/assets/css/blogpost.css index b4bd9f6..7357fd9 100644 --- a/public/assets/css/blogpost.css +++ b/public/assets/css/blogpost.css @@ -1,22 +1,22 @@ .wrapper { - display: flex; - flex-direction: column; - width: 95%; - min-height: 100vh; + display: flex; + flex-direction: column; + width: 95%; + min-height: 100vh; } header { - width: 100%; + width: 100%; } .card-wrap { - width: 100%; + width: 100%; } .blog-card { - padding: 60px; - max-width: 1100px; - margin: 50px auto; - color: var(--text-secondary); + padding: 60px; + max-width: 1100px; + margin: 50px auto; + color: var(--text-shade-1); } .blog-card h1, @@ -25,201 +25,201 @@ header { .blog-card h4, .blog-card h5, .blog-card h6 { - margin: 40px 0 10px; - color: var(--text); + margin: 40px 0 10px; + color: var(--text-shade-3); } .blog-card strong { - color: var(--text); + color: var(--text-shade-3); } .blog-card a, .blog-card a * { - color: #9d6ff3; - text-decoration: none; - font-weight: bold; + color: var(--accent-shade-1); + text-decoration: none; + font-weight: bold; } .blog-card a:hover, .blog-card a:hover { - text-decoration: underline; + text-decoration: underline; } .blog-card del { - text-decoration: line-through; + text-decoration: line-through; } .blog-card .title { - margin: 0; - margin-bottom: 8px; + margin: 0; + margin-bottom: 8px; } .blog-card .pub-info { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: left; - margin-top: auto; - margin-bottom: 30px; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: left; + margin-top: auto; + margin-bottom: 30px; } .blog-card .pub-info .date { - font-weight: bold; - color: var(--text); + font-weight: bold; + color: var(--text-shade-3); } .blog-card .pub-info > * { - margin-right: 0.5em; - margin-top: 0.2em; + margin-right: 0.5em; + margin-top: 0.2em; } .blog-card .profile { - display: inline-grid; - grid-template-columns: 30px auto; - grid-gap: 10px; - font-weight: bold; - color: var(--text); - align-items: center; - height: 32px; - margin-right: 0.3em; + display: inline-grid; + grid-template-columns: 30px auto; + grid-gap: 10px; + font-weight: bold; + color: var(--text-shade-3); + align-items: center; + height: 32px; + margin-right: 0.3em; } .blog-card .profile img { - margin: 0; - border-radius: 4px; - border: 1px solid var(--border); - max-width: 100%; + margin: 0; + border-radius: 4px; + border: 1px solid var(--border); + max-width: 100%; } .blog-card p, .post-info { - color: var(--text-secondary); + color: var(--text-shade-1); } .blog-card img { - max-width: 100%; - max-height: 800px; - margin: 10px auto; - display: block; - border-radius: 4px; - border: 1px solid var(--border); + max-width: 100%; + max-height: 800px; + margin: 10px auto; + display: block; + border-radius: 4px; + border: 1px solid var(--border); } .blog-card img.emoji { - display: inline; - margin: 0; - border: none; + display: inline; + margin: 0; + border: none; } .blog-card video { - width: 100%; - border-radius: 4px; - border: 1px solid var(--border); + width: 100%; + border-radius: 4px; + border: 1px solid var(--border); } .blog-card iframe { - width: 100%; - aspect-ratio: 16/9; - border-radius: 4px; - border: 1px solid var(--border); + width: 100%; + aspect-ratio: 16/9; + border-radius: 4px; + border: 1px solid var(--border); } /* Fallback for aspect-ratio since it's unsupported by some browsers (looking at you Safari) */ @supports not (aspect-ratio: 16/9) { - .blog-card .aspectratio-fallback { - position: relative; - height: 0; - padding-top: 56.25%; - } - .blog-card iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; - } + .blog-card .aspectratio-fallback { + position: relative; + height: 0; + padding-top: 56.25%; + } + .blog-card iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; + } } /* Some twitter iframe specific stuff */ .blog-card .twitter-tweet { - margin: auto; + margin: auto; } .blog-card .twitter-tweet iframe { - border: none; /* Fixes the double border */ + border: none; /* Fixes the double border */ } .blog-card table { - border-radius: 4px; - border-collapse: collapse; - background: #31375e; - margin-bottom: 30px; - overflow: hidden; + border-radius: 4px; + border-collapse: collapse; + background: var(--bg-shade-3); + margin-bottom: 30px; + overflow: hidden; } .blog-card table th { - padding: 8px 12px; - background: #3f4778; - color: var(--text); + padding: 8px 12px; + background: var(--bg-shade-4); + color: var(--text-shade-3); } .blog-card table td { - padding: 8px 12px; - vertical-align: top; - border-radius: inherit; + padding: 8px 12px; + vertical-align: top; + border-radius: inherit; } .blog-card table tr:nth-child(even) { - background: #2a2f50; + background: var(--bg-shade-2); } .blog-card pre code { - border-radius: 4px; - margin-bottom: 30px; + border-radius: 4px; + margin-bottom: 30px; } .blog-card input[type="checkbox"] { - appearance: none; - -webkit-appearance: none; - display: inline-block; - background: var(--btn-secondary); - padding: 12px; - margin: 4px; - border-radius: 4px; - vertical-align: -60%; + appearance: none; + -webkit-appearance: none; + display: inline-block; + background: var(--bg-shade-3); + padding: 12px; + margin: 4px; + border-radius: 4px; + vertical-align: -60%; } .blog-card input[type="checkbox"]:checked { - content: "checkboxtest"; - background: no-repeat center/contain url(../images/check.svg), - var(--btn-secondary); + content: "checkboxtest"; + background: no-repeat center/contain url(../images/check.svg), + var(--bg-shade-3); } .blog-card hr { - border: 1px solid var(--text-secondary); - margin: 30px 0; + border: 1px solid var(--text-shade-1); + margin: 30px 0; } .blog-card blockquote { - border-left: 2px solid var(--text-secondary); - padding: 8px 24px; - margin: 0; - margin-bottom: 30px; + border-left: 2px solid var(--text-shade-1); + padding: 8px 24px; + margin: 0; + margin-bottom: 30px; } @media screen and (max-width: 800px) { - .blog-card { - padding: 40px; - } + .blog-card { + padding: 40px; + } } @media screen and (max-width: 600px) { - .wrapper { - width: 100%; - } + .wrapper { + width: 100%; + } - header { - width: 90%; - margin: 35px auto; - } + header { + width: 90%; + margin: 35px auto; + } - .blog-card { - padding: 40px 5vw; - border-radius: 0; - margin-top: 0; - } + .blog-card { + padding: 40px 5vw; + border-radius: 0; + margin-top: 0; + } - footer { - width: 95%; - margin: auto auto 40px; - } + footer { + width: 95%; + margin: auto auto 40px; + } } diff --git a/public/assets/css/components.css b/public/assets/css/components.css new file mode 100644 index 0000000..f409e9c --- /dev/null +++ b/public/assets/css/components.css @@ -0,0 +1,190 @@ +/* BUTTONS */ + +button, +.button { + appearance: none; + -webkit-appearance: none; + border: 0; + border-radius: 6px; + font-family: Poppins, Arial, Helvetica, sans-serif; + font-size: 1rem; + color: var(--text-shade-3); + padding: 12px 48px; + background: var(--bg-shade-3); + cursor: pointer; + display: block; + text-align: center; +} +button:hover, +.button:hover { + background: var(--bg-shade-4); +} +button.inactive { + pointer-events: none; +} +button.primary, +.button.primary { + background: var(--accent-shade-0); +} +button.primary:hover, +.button.primary:hover { + background: var(--accent-shade-1); +} + +button.secondary.icon-btn, +.button.secondary.icon-btn { + width: 50px; + height: 50px; + display: flex; + justify-content: center; + align-items: center; +} +button svg, +.button svg { + width: 30px; + height: 30px; + display: block; +} + +/* MODALS */ + +body.modal-open { + overflow: hidden; +} + +div.modal-wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100vh; + + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); + + z-index: 10; +} +div.modal-wrapper.hidden { + display: none; +} +div.modal { + background: var(--bg-shade-3); + padding: 48px; + border-radius: 8px; + text-align: left; + width: min(660px, 90%); + box-sizing: border-box; +} + +div.modal h1 { + margin-top: 0; +} +p.modal-caption { + color: var(--text-shade-1); +} +p.modal-caption span, +p.switch-tier-modal-caption span { + color: var(--text-shade-3); +} + +.modal-button-wrapper { + margin-top: 24px; + display: flex; + justify-content: flex-end; +} +.modal-button-wrapper button { + margin-left: 12px; + width: fit-content; +} +.modal-button-wrapper button.cancel { + background: none; +} +.modal-button-wrapper button { + padding: 12px 24px; +} + +@media screen and (max-width: 600px) { + div.modal { + padding: 24px; + } +} + +/* MISC FORM COMPONENTS */ + +input[type="checkbox"] { + appearance: none; + -webkit-appearance: none; + background: var(--bg-shade-3); + padding: 12px; + margin: 4px; + margin-left: 0; + border-radius: 4px; + vertical-align: -65%; + width: fit-content; + cursor: pointer; +} +input[type="checkbox"]:checked { + background: no-repeat center/contain url(../images/check.svg), var(--accent-shade-0); +} + +input { + appearance: none; + -webkit-appearance: none; + display: block; + font-family: Poppins, Arial, Helvetica, sans-serif; + font-size: 1rem; + background-color: var(--bg-shade-3); + border: none; + border-radius: 4px; + padding: 12px; + color: var(--text-shade-3); + width: calc(100% - 24px); +} +input:focus { + background-color: var(--bg-shade-4); + outline: none; + transition: 150ms; +} +input[type="range"] { + background: transparent; + cursor: pointer; + width: 100%; + box-sizing: border-box; +} +input[type="range"]::-webkit-slider-runnable-track { + background: var(--bg-shade-3); + height: 1rem; + border-radius: 1rem; +} +input[type="range"]::-moz-range-track { + background: var(--bg-shade-3); + border-radius: 1rem; + height: 1rem; +} +input[type="range"]::-webkit-slider-thumb { + appearance: none; + -webkit-appearance: none; + width: 1.5rem; + height: 3rem; + margin-top: -1rem; + background-color: var(--accent-shade-1); + border-radius: 0.5rem; +} +input[type="range"]::-moz-range-thumb { + width: 1.5rem; + height: 3rem; + border: none; + border-radius: 0.5rem; + background-color: var(--accent-shade-1); +} +input[type="range"]:focus { + outline: none; +} +input[type="range"]:focus::-webkit-slider-thumb { + background-color: var(--accent-shade-3); +} +input[type="range"]:focus::-moz-range-thumb { + background-color: var(--accent-shade-3); +} diff --git a/public/assets/css/documentation.css b/public/assets/css/documentation.css index 7f56e7f..1f001a4 100644 --- a/public/assets/css/documentation.css +++ b/public/assets/css/documentation.css @@ -1,221 +1,396 @@ html, -body { - background: #131730; +body, +div.main-body { + height: 100%; + background: var(--bg-shade-0); } + a.logo-link { - margin: auto; - margin-left: 36px; - height: 40px; - text-decoration: none; + margin: auto; + margin-left: 36px; + height: 40px; + text-decoration: none; } -header { - width: calc(100% - 72px); - background: #131730; - padding: 12px 36px; - margin: 0; + +button#openSidebar { + display: none; } -header a.logo-link { - display: none; + +.docs-wrapper .content:not(.search) a { + text-decoration: none; + font-weight: bold; + color: var(--accent-shade-1); } -header nav a:first-child { - margin-left: -24px; + +.docs-wrapper header { + box-sizing: border-box; + margin: 20px; + margin-left: 0; +} +.docs-wrapper header a.logo-link { + display: none; +} +.docs-wrapper header nav a:first-child { + margin-left: 0; } .docs-wrapper { - display: grid; - grid-template-columns: repeat(2, fit-content(100%)); - grid-template-rows: repeat(2, fit-content(100%)); - height: 100vh; + display: grid; + grid-template-columns: fit-content(100%) auto; + grid-template-rows: fit-content(100%) auto; + height: 100%; } .docs-wrapper .sidebar { - display: flex; - flex-flow: column; - align-items: center; - width: clamp(270px, 30vw, 500px); - background: #161931; - max-height: calc(100vh - 69px); - overflow-y: scroll; - min-height: 100%; + display: flex; + flex-flow: column; + align-items: center; + width: clamp(270px, 25vw, 500px); + overflow-y: scroll; + overflow-x: hidden; + min-height: 100%; } .docs-wrapper .sidebar .section { - display: flex; - flex-flow: column; - width: 200px; - margin-left: 138px; - margin-bottom: 72px; + display: flex; + flex-flow: column; + width: 200px; + margin-left: clamp(60px, 10vw, 138px); + margin-bottom: 72px; } .docs-wrapper .sidebar .section:first-child { - margin-top: 72px; + margin-top: 72px; } .docs-wrapper .sidebar .section h5 { - margin: 0; - font-weight: normal; - text-transform: uppercase; - color: var(--text-secondary-2); - margin-bottom: 12px; + margin: 0; + font-weight: normal; + text-transform: uppercase; + color: var(--text-shade-0); + margin-bottom: 12px; } .docs-wrapper .sidebar .section a { - position: relative; - text-decoration: none; - color: var(--text-secondary); - width: fit-content; - margin-bottom: 12px; + position: relative; + text-decoration: none; + color: var(--text-shade-1); + width: fit-content; + margin-bottom: 12px; } .docs-wrapper .sidebar .section a.active, .docs-wrapper .sidebar .section a:hover { - color: var(--text); + color: var(--text-shade-3); } .docs-wrapper .sidebar .section a.active::before { - /* This filter thing is jank, if anyone knows a better way to do this please fix */ - filter: invert(51%) sepia(12%) saturate(2930%) hue-rotate(218deg) - brightness(99%) contrast(92%); - position: absolute; - left: -30px; - content: url(../images/arrow-right.svg); + /* This filter thing is jank, if anyone knows a better way to do this please fix */ + filter: invert(51%) sepia(12%) saturate(2930%) hue-rotate(218deg) + brightness(99%) contrast(92%); + position: absolute; + left: -30px; + content: url(../images/docs/arrow-right.svg); } .docs-wrapper .content { - width: calc(100vw - clamp(270px, 30vw, 500px) - (72px * 2)); - background: var(--background); - padding: 72px; - max-height: calc(100vh - 69px - (72px * 2)); - overflow-y: scroll; + background: var(--bg-shade-1); + padding: 72px; + max-height: 100%; + overflow-y: scroll; + border-top-left-radius: 8px; } .docs-wrapper .content-inner { - max-width: 900px; + max-width: 900px; } .docs-wrapper .content p { - color: var(--text-secondary); + color: var(--text-shade-1); } .docs-wrapper .content h1:first-child { - margin-top: 0; + margin-top: 0; } .docs-wrapper .content .quick-links-grid { - display: grid; - grid-template-columns: repeat(2, 1fr); - grid-gap: 24px; - margin-bottom: 60px; + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 24px; + margin-bottom: 60px; } .docs-wrapper .quick-links-grid a { - text-decoration: none; - background: #252a51; - border-radius: 6px; - color: var(--text-secondary); - display: flex; - align-items: center; - padding: 20px; + text-decoration: none; + background: var(--bg-shade-2); + border-radius: 6px; + color: var(--text-shade-1); + display: flex; + align-items: center; + padding: 20px; } .docs-wrapper .quick-links-grid svg:first-child { - height: 36px; - margin-right: 24px; - margin-left: 4px; - color: var(--theme-light); + height: 36px; + margin-right: 24px; + margin-left: 4px; + color: var(--accent-shade-2); } .docs-wrapper .quick-links-grid p.header { - font-size: 22px; - font-weight: 600; - color: var(--text); - margin: 0; + font-size: 22px; + font-weight: 600; + color: var(--text-shade-3); + margin: 0; } .docs-wrapper .quick-links-grid p { - margin: 0; + margin: 0; } .docs-wrapper .quick-links-grid svg:last-child { - height: 36px; - margin-left: auto; + height: 36px; + margin-left: auto; +} + +.docs-wrapper .content-inner div.tip { + position: relative; + width: 100%; + padding: 36px; + background: var(--bg-shade-2); + border-radius: 8px; + overflow: hidden; + border: var(--accent-shade-2); + margin: 24px 0; + box-sizing: border-box; +} + +.docs-wrapper .content-inner div.tip::after { + content: ""; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 12px; + background: var(--accent-shade-2); + opacity: 1; +} +.docs-wrapper .content-inner div.tip.red::after { + background: var(--red-shade-1); +} +.docs-wrapper .content-inner div.tip.green::after { + background: var(--green-shade-1); +} + +.docs-wrapper .content .missing-in-locale-notice { + background: var(--bg-shade-2); + padding: 24px; + border-radius: 6px; +} + +.search .purple-card { + padding: 36px; +} +.search .purple-card h1 { + margin-top: 0; +} +.search .purple-card p { + margin-bottom: 2em; +} +.search .purple-card input::placeholder { + color: var(--text-shade-0); +} +.search .purple-card input:focus { + background-color: var(--bg-shade-4); + color: #fff; + transition: 200ms; + outline: none; +} + +.search .input-wrapper { + position: relative; + margin-top: 8px; +} +.search .input-wrapper .matches { + display: flex; + flex-flow: column; + font-size: 1rem; + background-color: var(--bg-shade-2); + border: none; + border-radius: 0 0 4px 4px; + max-height: 204px; + overflow-y: auto; + overflow-x: hidden; +} +.search .input-wrapper .matches * { + padding: 12px; + margin: 0; + text-decoration: none; + color: var(--text-shade-3); +} +.search .input-wrapper .matches a:hover { + background-color: var(--bg-shade-1); +} +.search input.has-matches { + border-radius: 4px 4px 0 0; +} + +.platform-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 24px; + margin-top: 36px; +} + +.docs-wrapper .platform-grid a { + text-decoration: none; + background: var(--bg-shade-3); + border-radius: 12px; + color: var(--text-shade-4) !important; + display: grid; + grid-template-rows: auto fit-content(100%); + align-items: center; + justify-content: center; + text-align: center; + padding: 36px; + padding-bottom: 24px; + gap: 24px; +} + +.platform-grid a img { + width: 180px; + max-width: 100%; + height: auto; +} +.platform-grid a span { + margin-top: auto; + font-size: 1.2rem; +} + +@media screen and (max-width: 1296px) { + .docs-wrapper .content { + padding: 48px; + } +} + +@media screen and (max-width: 1080px) { + .docs-wrapper .header-wrapper { + position: absolute; + top: 0; + left: 0; + display: flex; + width: 100vw; + } + + button#openSidebar { + display: block; + padding: 0; + margin: 0; + margin-left: 20px; + background: none; + } + + .docs-wrapper header { + margin-left: 20px; + width: 100%; + } + + .docs-wrapper { + margin-top: 80px; + height: calc(100% - 80px); + } + + a.logo-link { + display: none; + } + .docs-wrapper header a.logo-link { + display: block; + height: 40px; + margin: 0; + margin-right: 34px; + } + + .docs-wrapper .sidebar { + grid-column: 1 / span 1; + grid-row: 2 / span 1; + width: 0; + transition: width 250ms; + } + + .docs-wrapper .sidebar.open { + width: min(300px, 100vw); + } + + .docs-wrapper .content { + width: 100vw; + box-sizing: border-box; + border-top-left-radius: 0; + grid-column: 2 / span 1; + grid-row: 2 / span 1; + } + .docs-wrapper .content.open-sidebar { + border-top-left-radius: 8px; + } + .docs-wrapper .content-inner { + max-width: none; + } +} + +@media screen and (max-width: 820px) { + .docs-wrapper .content .quick-links-grid, + .platform-grid { + grid-template-columns: 1fr; + grid-auto-rows: 1fr; + } +} + +@media screen and (max-width: 492px) { + .docs-wrapper .content { + padding: 36px; + } + + header .logo-link svg text { + display: none; + } + header .logo-link svg { + width: 39.876px; + } + .docs-wrapper header a.logo-link { + margin-right: 0; + } +} + +@media screen and (max-width: 360px) { + .docs-wrapper .content { + padding: 24px; + } } /* Scrollbar styling 'cause it's fancy */ .docs-wrapper .sidebar::-webkit-scrollbar, .docs-wrapper .content::-webkit-scrollbar, -.docs-wrapper .content pre code::-webkit-scrollbar { - width: 12px; - height: 12px; +.docs-wrapper .content pre code::-webkit-scrollbar, +.search .input-wrapper .matches::-webkit-scrollbar { + width: 12px; + height: 12px; } .docs-wrapper .sidebar::-webkit-scrollbar-track, .docs-wrapper .content::-webkit-scrollbar-track, -.docs-wrapper .content pre code::-webkit-scrollbar-track { - background: none; +.docs-wrapper .content pre code::-webkit-scrollbar-track, +.search .input-wrapper .matches::-webkit-scrollbar-track { + background: none; } .docs-wrapper .sidebar::-webkit-scrollbar-thumb, .docs-wrapper .content::-webkit-scrollbar-thumb, -.docs-wrapper .content pre code::-webkit-scrollbar-thumb { - background-color: var(--text-secondary-2); - border-radius: 24px; - border: 3px solid #161931; +.docs-wrapper .content pre code::-webkit-scrollbar-thumb, +.search .input-wrapper .matches::-webkit-scrollbar-thumb { + background-color: var(--text-shade-0); + border-radius: 24px; + border: 3px solid var(--bg-shade-0); } .docs-wrapper .content::-webkit-scrollbar-thumb { - border: 3px solid var(--background); + border: 3px solid var(--bg-shade-1); } -.docs-wrapper .content pre code::-webkit-scrollbar-thumb { - border: 3px solid #0d0f20; +.docs-wrapper .content pre code::-webkit-scrollbar-thumb, +.search .input-wrapper .matches::-webkit-scrollbar-thumb { + border: 3px solid var(--bg-shade-2); } -.docs-wrapper .sidebar { - scrollbar-width: thin; - scrollbar-color: var(--text-secondary-2) #161931; + +.docs-wrapper .sidebar, +.search .input-wrapper .matches { + scrollbar-width: thin; + scrollbar-color: var(--text-shade-0) var(--bg-shade-1); } .docs-wrapper .content { - scrollbar-width: thin; - scrollbar-color: var(--text-secondary-2) var(--background); + scrollbar-width: thin; + scrollbar-color: var(--text-shade-0) var(--bg-shade-1); } -.docs-wrapper .content pre codear { - scrollbar-width: thin; - scrollbar-color: var(--text-secondary-2) #0d0f20; -} -.docs-wrapper .content .missing-in-locale-notice { - background: #252a51; - padding: 24px; - border-radius: 6px; -} - - -.input-wrapper { - display: flex; - margin-top: 8px; -} - -.localization-form input { - appearance: none; - -webkit-appearance: none; - border: 0; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - background-color: var(--btn-secondary); - border: none; - border-radius: 4px 0 0 4px; - padding: 12px 24px; - color: var(--text-secondary); - width: 20px; - flex: 2 10%; -} - -.search input::placeholder { - color: var(--text-secondary-2); -} - -.search input:focus { - background-color: #fff; - color: var(--btn-secondary); - transition: 200ms; - outline: none; -} - -.search button { - appearance: none; - -webkit-appearance: none; - border: 0; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - color: var(--text); - padding: 12px 36px; - background: var(--btn); - cursor: pointer; -} - -@media screen and (max-width: 1080px) { - .docs-wrapper .sidebar .section { - margin-left: 60px; - width: 184px; - } +.docs-wrapper .content pre code { + scrollbar-width: thin; + scrollbar-color: var(--text-shade-0) var(--bg-shade-0); } diff --git a/public/assets/css/dropdown.css b/public/assets/css/dropdown.css index 1b0860d..194d4bc 100644 --- a/public/assets/css/dropdown.css +++ b/public/assets/css/dropdown.css @@ -1,106 +1,76 @@ .select-box { - display: flex; - width: 188px; - flex-direction: column; - position: relative; - user-select: none; + display: flex; + flex-direction: column; + position: relative; + user-select: none; } .select-box > * { - box-sizing: border-box; + box-sizing: border-box; } .select-box .options-container { - max-height: 0; - width: 100%; - opacity: 0; - transition: all 0.4s; - overflow: hidden; - border-radius: 5px; - background-color: var(--btn-secondary); - order: 1; - position: absolute; - top: 50px; -} - -.selected-locale { - margin-bottom: 8px; - position: relative; - width: 188px; - height: 45px; - border-radius: 5px; - display: flex; - align-items: center; - background-color: var(--btn-secondary); - color: white; - order: 0; -} - -.selected-locale::after { - content: ""; - width: 1.2rem; - height: 1.2rem; - background: url("/assets/images/down-arrow.svg"); - position: absolute; - right: 15px; - top: 50%; - transition: transform 150ms; - transform: translateY(-50%); - background-size: contain; - background-position: center; + max-height: 0; + width: fit-content; + opacity: 0; + transition: all 0.4s; + overflow: hidden; + border-radius: 5px; + background-color: var(--bg-shade-3); + order: 1; + position: absolute; + top: 48px; + right: 0; } .select-box .option .item { - color: #afb5dd; + color: var(--text-shade-2); } .select-box .lang { - width: 1.3rem; - height: 1rem; - margin-right: .2rem; - display: inline-block; + width: 1.3rem; + height: 1rem; + margin-right: .2rem; + display: inline-block; } .select-box .options-container.active { - max-height: 240px; - opacity: 1; - overflow-y: auto; + max-height: 240px; + opacity: 1; + overflow-y: auto; } -.select-box .options-container.active + .selected-locale::after { - transform: translateY(-50%) rotateX(180deg); +.select-box .options-container.active + .locale-dropdown-toggle::after { + transform: translateY(-50%) rotateX(180deg); } .select-box .options-container::-webkit-scrollbar { - width: 8px; - background: #0d141f; - background: #81878f; - background: #f1f2f3; - border-radius: 0 5px 5px 0; + width: 8px; + background: var(--bg-shade-3); + border-radius: 0 5px 5px 0; } .select-box .options-container::-webkit-scrollbar-thumb { - background: #525861; - background: #81878f; - border-radius: 0 5px 5px 0; + background: var(--text-shade-1); + border-radius: 0 5px 5px 0; } -.select-box .option, -.selected-locale { - padding: 12px 15px; - cursor: pointer; +.select-box .option { + padding: 12px 15px; + cursor: pointer; + border-radius: 5px; } .select-box .option:hover { - background: #2f345b; + background: var(--bg-shade-4); } .select-box .option:hover .item { - color: white; + color: white; } .select-box label { - cursor: pointer; + cursor: pointer; } .select-box .option .radio { - display: none; + display: none; } diff --git a/public/assets/css/highlightjs.css b/public/assets/css/highlightjs.css index e71ac73..966c93c 100644 --- a/public/assets/css/highlightjs.css +++ b/public/assets/css/highlightjs.css @@ -1,137 +1,137 @@ pre code.hljs { - display: block; - overflow-x: auto; - padding: 36px; - border-radius: 10px; - font-family: Poppins, Arial, Helvetica, sans-serif; + display: block; + overflow-x: auto; + padding: 36px; + border-radius: 10px; + font-family: Poppins, Arial, Helvetica, sans-serif; } code.hljs { - padding: 3px 5px; + padding: 3px 5px; } .hljs { - background: #0D0F20; - color: #d6deeb; + background: var(--bg-shade-0); + color: #d6deeb; } .hljs-keyword { - color: #c792ea; - font-style: italic; + color: var(--accent-shade-2); + font-style: italic; } .hljs-built_in { - color: #addb67; - font-style: italic; + color: #addb67; + font-style: italic; } .hljs-type { - color: #82aaff; + color: #82aaff; } .hljs-literal { - color: #ff5874; + color: #ff5874; } .hljs-number { - color: #f78c6c; + color: #f78c6c; } .hljs-regexp { - color: #5ca7e4; + color: #5ca7e4; } .hljs-string { - color: #ecc48d; + color: #ecc48d; } .hljs-subst { - color: #d3423e; + color: #d3423e; } .hljs-symbol { - color: #82aaff; + color: #82aaff; } .hljs-class { - color: #ffcb8b; + color: #ffcb8b; } .hljs-function { - color: #82aaff; + color: #82aaff; } .hljs-title { - color: #dcdcaa; - font-style: italic; + color: #dcdcaa; + font-style: italic; } .hljs-params { - color: #7fdbca; + color: #7fdbca; } .hljs-comment { - color: #637777; - font-style: italic; + color: #637777; + font-style: italic; } .hljs-doctag { - color: #7fdbca; + color: #7fdbca; } .hljs-meta, .hljs-meta .hljs-keyword { - color: #82aaff; + color: #82aaff; } .hljs-meta .hljs-string { - color: #ecc48d; + color: #ecc48d; } .hljs-section { - color: #82b1ff; + color: #82b1ff; } .hljs-attr, .hljs-name, .hljs-tag { - color: #7fdbca; + color: #7fdbca; } .hljs-attribute { - color: #80cbc4; + color: #80cbc4; } .hljs-variable { - color: #addb67; + color: #addb67; } .hljs-bullet { - color: #d9f5dd; + color: #d9f5dd; } .hljs-code { - color: #80cbc4; + color: #80cbc4; } .hljs-emphasis { - color: #c792ea; - font-style: italic; + color: #c792ea; + font-style: italic; } .hljs-strong { - color: #addb67; - font-weight: 700; + color: #addb67; + font-weight: 700; } .hljs-formula { - color: #c792ea; + color: #c792ea; } .hljs-link { - color: #ff869a; + color: #ff869a; } .hljs-quote { - color: #697098; - font-style: italic; + color: #697098; + font-style: italic; } .hljs-selector-tag { - color: #ff6363; + color: #ff6363; } .hljs-selector-id { - color: #fad430; + color: #fad430; } .hljs-selector-class { - color: #addb67; - font-style: italic; + color: #addb67; + font-style: italic; } .hljs-selector-attr, .hljs-selector-pseudo { - color: #c792ea; - font-style: italic; + color: #c792ea; + font-style: italic; } .hljs-template-tag { - color: #c792ea; + color: #c792ea; } .hljs-template-variable { - color: #addb67; + color: #addb67; } .hljs-addition { - color: #addb67ff; - font-style: italic; + color: #addb67ff; + font-style: italic; } .hljs-deletion { - color: #ef535090; - font-style: italic; + color: #ef535090; + font-style: italic; } diff --git a/public/assets/css/localization.css b/public/assets/css/localization.css index 82caa8f..2205a9c 100644 --- a/public/assets/css/localization.css +++ b/public/assets/css/localization.css @@ -1,95 +1,95 @@ .localization-wrapper { - width: 100%; - min-height: calc(100vh - 155px); - margin: 0; - text-align: left; - display: flex; - justify-content: center; - align-items: center; + width: 100%; + min-height: calc(100vh - 155px); + margin: 0; + text-align: left; + display: flex; + justify-content: center; + align-items: center; } .localization-widget { - max-width: 600px; - width: 100%; + max-width: 600px; + width: 100%; } .caption { - color: var(--text-secondary); - max-width: 400px; - margin: 20px 0; + color: var(--text-shade-1); + max-width: 400px; + margin: 20px 0; } .title.dot { - margin: 0; + margin: 0; } .localization-instr, .localization-instr:visited { - display: flex; - align-items: center; - color: var(--theme-light); - text-decoration: none; - position: relative; - left: -4px; - width: fit-content; + display: flex; + align-items: center; + color: var(--accent-shade-2); + text-decoration: none; + position: relative; + left: -4px; + width: fit-content; } .localization-instr svg { - height: 1.3em; - margin-right: 4px; + height: 1.3em; + margin-right: 4px; } .localization-form { - padding: 36px; - background-color: #151934; - border-radius: 12px; - margin-top: 36px; + padding: 36px; + background-color: var(--bg-shade-0); + border-radius: 12px; + margin-top: 36px; } .input-wrapper { - display: flex; - margin-top: 8px; + display: flex; + margin-top: 8px; } .localization-form input { - appearance: none; - -webkit-appearance: none; - border: 0; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - background-color: var(--btn-secondary); - border: none; - border-radius: 4px 0 0 4px; - padding: 12px 24px; - color: var(--text-secondary); - width: 20px; - flex: 2 10%; + appearance: none; + -webkit-appearance: none; + border: 0; + font-family: Poppins, Arial, Helvetica, sans-serif; + font-size: 1rem; + background-color: var(--bg-shade-3); + border: none; + border-radius: 4px 0 0 4px; + padding: 12px 24px; + color: var(--text-shade-1); + width: 20px; + flex: 2 10%; } .localization-form input::placeholder { - color: var(--text-secondary-2); + color: var(--text-shade-0); } .localization-form input:focus { - background-color: #fff; - color: var(--btn-secondary); - transition: 200ms; - outline: none; + background-color: var(--bg-shade-4); + color: var(--bg-shade-3); + transition: 200ms; + outline: none; } .localization-form button { - appearance: none; - -webkit-appearance: none; - border: 0; - border-radius: 0 4px 4px 0; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - color: var(--text); - padding: 12px 36px; - background: var(--btn); - cursor: pointer; + appearance: none; + -webkit-appearance: none; + border: 0; + border-radius: 0 4px 4px 0; + font-family: Poppins, Arial, Helvetica, sans-serif; + font-size: 1rem; + color: var(--text-shade-3); + padding: 12px 36px; + background: var(--accent-shade-0); + cursor: pointer; } footer { - margin-top: auto; + margin-top: auto; } diff --git a/public/assets/css/login.css b/public/assets/css/login.css index 9fec471..7d075b3 100644 --- a/public/assets/css/login.css +++ b/public/assets/css/login.css @@ -1,146 +1,132 @@ .wrapper { - display: flex; - min-height: 100vh; + display: flex; + flex-flow: column; + min-height: 100vh; +} +header { + margin: 35px 0; } .account-form-wrapper { - margin: auto; - width: fit-content; - overflow: hidden; -} - -.account-form-wrapper .logotype { - display: block; - position: relative; - left: -6px; - margin-bottom: 30px; -} - -.account-form-wrapper .logotype svg { - width: 140px; -} -.account-form-wrapper .logotype svg text { - font-size: 20px; - transform: translate(593px, 495px); + margin: auto; + width: fit-content; + overflow: hidden; } form.account { - display: block; - padding: 40px 48px; - background-color: #292E53; - color: var(--text-secondary); - border-radius: 12px; - width: 360px; - max-width: calc(90vw - 96px); + display: block; + padding: 40px 48px; + background-color: var(--bg-shade-2); + color: var(--text-shade-1); + border-radius: 12px; + width: min(480px, 90vw); + box-sizing: border-box; } form.account h2 { - margin: 0; - color: var(--text) + margin: 0; + color: var(--text-shade-3); } form.account p { - margin: 12px 0; + margin: 12px 0; } form.account div { - margin-top: 24px; -} - -form.account input { - appearance: none; - -webkit-appearance: none; - display: block; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - background-color: #353C6A; - border: none; - border-radius: 4px; - padding: 12px; - color: var(--text); - width: calc(100% - 24px); -} - -form.account input:focus { - background-color: #4B5595; - outline: none; - transition: 150ms; + margin-top: 24px; } form.account label { - display: block; - margin-bottom: 6px; - text-transform: uppercase; - font-size: 12px; + display: block; + margin-bottom: 6px; + text-transform: uppercase; + font-size: 12px; } form.account button { - appearance: none; - -webkit-appearance: none; - display: block; - border: none; - border-radius: 4px; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - color: var(--text); - padding: 12px 30px; - background: #353C6A; - margin-top: 18px; - cursor: pointer; - width: 100%; - text-decoration: none; -} - -form.account button[type="submit"] { - background: var(--btn); - margin: auto; + width: 100%; + background: var(--accent-shade-0); } form.account a { - text-decoration: none; - display: block; - color: var(--text-secondary); - text-align: right; - margin: 6px 0; - width: fit-content; + text-decoration: none; + display: block; + color: var(--text-shade-1); + text-align: right; + margin: 6px 0; + width: fit-content; } form.account a:hover { - color: var(--text); + color: var(--text-shade-3); } form.account a.pwdreset { - margin-left: auto; - font-size: 14px; + margin-left: auto; + font-size: 14px; } form.account a.register { - margin:auto; - margin-top: 18px; -} - -form.account.register div:last-child { - margin-top: 42px; + margin: auto; + margin-top: 18px; } @keyframes banner-notice { - 0% {top: -150px} - 20% {top: 35px} - 80% {top: 35px} - 100% {top: -150px} + 0% { + top: -150px; + } + 20% { + top: 35px; + } + 80% { + top: 35px; + } + 100% { + top: -150px; + } } .banner-notice { - display: flex; - justify-content: center; - position: fixed; - top: -150px; - width: 100%; - animation: banner-notice 5s; + display: flex; + justify-content: center; + position: fixed; + top: -150px; + width: 100%; + animation: banner-notice 5s; } .banner-notice div { - padding: 4px 36px; - border-radius: 5px; - z-index: 3; + padding: 4px 36px; + border-radius: 5px; + z-index: 3; } .banner-notice.error div { - background: #A9375B; -} \ No newline at end of file + background: var(--red-shade-1); +} + +form.account.register { + display: grid; + grid-template-columns: repeat(2, 1fr); + width: min(780px, 90vw); + column-gap: 24px; + margin-bottom: 48px; +} +form.account.register div.h-captcha { + grid-column: 1 / span 2; + display: flex; + justify-content: center; +} +form.account.register p, +form.account.register div.email, +form.account.register div.buttons { + grid-column: 1 / span 2; +} + +@media screen and (max-width: 720px) { + form.account.register { + grid-template-columns: 1fr; + } + form.account.register div.h-captcha, + form.account.register p, + form.account.register div.email, + form.account.register div.buttons { + grid-column: unset; + } +} diff --git a/public/assets/css/main.css b/public/assets/css/main.css index f65167b..2f52611 100644 --- a/public/assets/css/main.css +++ b/public/assets/css/main.css @@ -1,18 +1,32 @@ - :root { - --background: #1B1F3B; - --text: white; - --text-secondary: #A1A8D9; - --btn: #673DB6; - --btn-secondary: #333960; - --theme: var(--btn); - --theme-light: #A185D6; - --text-secondary-2: #8990C1; + /* 1 is the base color, <1 are darker variations and >1 are lighter */ + + --bg-shade-0: #131733; + --bg-shade-1: #1B1F3B; + --bg-shade-2: #23274A; + --bg-shade-3: #373C65; + --bg-shade-4: #494F81; + + --accent-shade-0: #673DB6; + --accent-shade-1: #9D6FF3; + --accent-shade-2: #A185D6; + --accent-shade-3: #CAB1FB; + + --text-shade-0: #8990C1; + --text-shade-1: #A1A8D9; + --text-shade-2: #CAC1F5; + --text-shade-3: #fff; + + --green-shade-0: #37a985; + --green-shade-1: #59c9a5; + + --red-shade-1: #a9375b; + --border: rgba(255, 255, 255, 0.1); } body { - background: var(--background); + background: var(--bg-shade-1); padding-bottom: env(safe-area-inset-bottom); } body, .main-body { @@ -21,7 +35,7 @@ body, .main-body { position: relative; /* This fixes overflow-x not hiding on Safari on mobile */ overflow-x: hidden; margin: 0; - color: var(--text); + color: var(--text-shade-3); justify-content: center; font-family: Poppins, Arial, Helvetica, sans-serif; } @@ -55,49 +69,17 @@ body, .main-body { } h1.dot:not([data-title-suffix]):after, h2.dot:not([data-title-suffix]):after { - /* content: "."; - color: #9D6FF3; */ content: ""; - background-color: #9D6FF3; - width: 0.6rem; - height: 0.6rem; - border-radius: 50%; - display: inline-block; + background-color: var(--accent-shade-1); + width: 0.6rem; + height: 0.6rem; + border-radius: 50%; + display: inline-block; } h1.dot[data-title-suffix]:after, h2.dot[data-title-suffix]:after { content: attr(data-title-suffix); display: inline-block; - color: #9D6FF3; -} - -header { - display: flex; - align-items: center; - margin-top: 35px; -} -header a { - text-decoration: none; -} -header .logo-link, header .logo-link svg { - display: block; -} -header nav a:first-child { - margin-left: 40px; -} -header nav a { - color: var(--text-secondary); - margin: 0 17px; - text-decoration: none; -} -header nav a:hover { - color: var(--text); - transition: color 50ms ease-in-out; -} - -.locale-dropdown { - margin-left: auto; - z-index: 2; - height: 45px; + color: var(--accent-shade-1); } /* Misc */ @@ -106,14 +88,13 @@ header nav a:hover { z-index: -2; width: 2100px; height: 1700px; - background: #111531; + background: var(--bg-shade-0); border-radius: 50%; top: -250px; right: -1420px; - /* left: 60vw; */ } .light-purple-circle { - background: #CAB1FB; + background: var(--accent-shade-3); width: 500px; height: 500px; position: relative; @@ -180,7 +161,7 @@ img.emoji { max-width: 423px; } .progress-hero .text a { - color: #9d6ff3; + color: var(--accent-shade-1); text-decoration: none; font-weight: bold; } @@ -218,7 +199,7 @@ img.emoji { } .text { font-size: 1rem; - color: var(--text-secondary); + color: var(--text-shade-1); width: 86%; line-height: 1.8; margin: 0; @@ -235,26 +216,11 @@ img.emoji { align-items: flex-start; } .hero .buttons a { - display: block; + text-decoration: none; } -.hero .buttons a > * { - cursor: pointer; -} -.button { - appearance: none; - -webkit-appearance: none; - border: 0; - border-radius: 6px; - font-family: Poppins, Arial, Helvetica, sans-serif; - font-size: 1rem; - color: var(--text); -} -.button.primary { - padding: 12px 48px; - background: var(--btn); -} -.button.secondary { - background: var(--btn-secondary); + +.hero .button.secondary { + padding: 0; } .button.secondary.discord svg { margin-bottom: -1px; @@ -263,18 +229,6 @@ img.emoji { margin-bottom: 15px; margin-right: 15px; } -.button.secondary.icon-btn { - width: 50px; - height: 50px; - display: flex; - justify-content: center; - align-items: center; -} -.button svg { - width: 30px; - height: 30px; - display: block; -} /* Non-hero sections */ .sect .title { @@ -302,13 +256,13 @@ section.progress .left, section.progress .right { section.progress .right { position: relative; padding-left: 80px; - background: var(--theme); + background: var(--accent-shade-0); border-top-left-radius: 10px; border-bottom-left-radius: 10px; } section.progress .right .title a { text-decoration: none; - color: var(--text); + color: var(--text-shade-3); } section.progress .right .title a:hover { text-decoration: underline; @@ -321,7 +275,7 @@ section.progress .right:before { background: yellow; left: 90%; margin-top: -50px; - background: var(--theme); + background: var(--accent-shade-0); z-index: -1; } @@ -339,23 +293,23 @@ section.faq { .question-and-answer summary { font-size: 1.5625rem; - color: #B8BDDF; + color: var(--text-shade-2); } .question-and-answer[open] summary { - color: var(--text); + color: var(--text-shade-3); } .question-and-answer summary:hover { - color: var(--text); + color: var(--text-shade-3); text-decoration: underline; cursor: pointer; } .question-and-answer .text { margin: 5px 0; line-height: 1.85; - color: var(--text-secondary-2); + color: var(--text-shade-0); } .question-and-answer .text a { - color: #9d6ff3; + color: var(--accent-shade-1); text-decoration: none; font-weight: bold; } @@ -373,11 +327,11 @@ section.showcase::before { content: ""; width: 400vw; margin-left: -50vw; - background: linear-gradient(180deg, rgba(19, 22, 36, 0) 0%, #131624 100%); + background: linear-gradient(180deg, rgba(19, 22, 36, 0) 0%, var(--bg-shade-0) 100%); position: absolute; top: 0; bottom: 0; - z-index: -1; + z-index: -1; } section.showcase .text { max-width: 504px; @@ -389,16 +343,16 @@ section.showcase .grid { grid-gap: 24px; } section.showcase .grid .item { - background: #252A51; + background: var(--bg-shade-2); border-radius: 10px; padding: 42px 36px; } section.showcase .grid .item.highlight { - border: 2px solid #9D6FF3; + border: 2px solid var(--accent-shade-1); } section.showcase .grid .item svg { height: 36px; - color: #9D6FF3; + color: var(--accent-shade-1); } section.showcase .grid .item h1 { margin-top: 14px; @@ -407,7 +361,7 @@ section.showcase .grid .item h1 { } section.showcase .grid .item p { margin: 0; - color: var(--text-secondary) + color: var(--text-shade-1) } section.team { @@ -446,7 +400,7 @@ section.team { display: grid; grid-template-columns: 110px 1fr; grid-gap: 20px; - background: #16192D; + background: var(--bg-shade-0); grid-column: span 2; border-radius: 10px; align-items: center; @@ -464,7 +418,7 @@ section.team { margin: 0; } .card .sub { - color: #59C9A5; + color: var(--green-shade-1); font-size: .875rem; } .card .title { @@ -483,12 +437,13 @@ section.team { display: block; } .card .text { - color: var(--text-secondary); + color: var(--text-shade-1); } section.team-helpers { position: relative; margin-top: 160px; + overflow: hidden; } section.team-helpers .text { max-width: 504px; @@ -496,30 +451,27 @@ section.team-helpers .text { } section.team-helpers .team-helpers-cards { display: inline-grid; - grid-template-columns: repeat(9, 1fr); + grid-template-columns: repeat(12, 1fr); grid-gap: 20px; margin-right: 20px; - color: var(--text-secondary); + color: var(--text-shade-1); width: max-content; } -section.team-helpers .row.second .team-helpers-cards { - grid-template-columns: repeat(12, 1fr); -} section.team-helpers .row { width: fit-content; } section.team-helpers .row.first { - animation: infiniteScrollRow1 15s linear infinite; /* Set the duration to 5s times the number of cards */ + animation: infiniteScrollRow1 25s linear infinite; } section.team-helpers .row.second { - animation: infiniteScrollRow2 20s linear infinite; /* Set the duration to 5s times the number of cards */ + animation: infiniteScrollRow2 25s linear infinite; } -@keyframes infiniteScrollRow1 { - 0% { transform: translate3d(0); } +@keyframes infiniteScrollRow1 { + 0% { transform: translate3d(0); } 100% { transform: translate3d(calc(100% / -3), 0, 0); } } -@keyframes infiniteScrollRow2 { - 0% { transform: translate3d(calc(100% / -3), 0, 0); } +@keyframes infiniteScrollRow2 { + 0% { transform: translate3d(calc(100% / -3), 0, 0); } 100% { transform: translate3d(0, 0, 0); } } section.team-helpers .animation-wrapper { @@ -535,7 +487,7 @@ section.team-helpers .animation-wrapper::after { width: 101%; /* If set to 100% it doesn't cover it completely */ left: -0.5%; height: 100%; - background: linear-gradient(90deg, var(--background) 0%, rgba(27, 31, 59, 0) 20%, rgba(27, 31, 59, 0) 80%, var(--background) 100%); + background: linear-gradient(90deg, var(--bg-shade-1) 0%, rgba(27, 31, 59, 0) 20%, rgba(27, 31, 59, 0) 80%, var(--bg-shade-1) 100%); z-index: 1; pointer-events: none; } @@ -555,7 +507,7 @@ section.team-helpers .animation-wrapper .row-wrapper::before { width: 100%; left: calc(-100% - 20px); height: 100%; - background: var(--background); + background: var(--bg-shade-1); z-index: 2; pointer-events: none; } @@ -566,7 +518,7 @@ section.team-helpers .animation-wrapper .row-wrapper::after { width: 100%; left: calc(100% - 20px); height: 100%; - background: var(--background); + background: var(--bg-shade-1); z-index: 2; pointer-events: none; } @@ -583,12 +535,12 @@ section.team-helpers .helper-card { flex-direction: row; align-items: center; padding: 14px 24px; - background: #16192D; + background: var(--bg-shade-0); border-radius: 12px; min-width: 480px; } section.team-helpers .helper-card:hover { - background: #252A51; + background: var(--bg-shade-2); transition: 200ms; } section.team-helpers .helper-card.special { @@ -620,12 +572,12 @@ section.team-helpers .helper-card .pfp { height: 48px; } section.team-helpers .helper-card span { - color: var(--text); + color: var(--text-shade-3); font-weight: 600; margin-right: 0.6ch; } section.team-helpers .helper-card p { - color: var(--text-secondary); + color: var(--text-shade-1); } section.update-signup { @@ -656,21 +608,21 @@ section.update-signup .floating-serverjoin { width: 100%; max-width: 576px; - background: #15182D; + background: var(--bg-shade-0); border-radius: 6px; padding: 18px; overflow-x: hidden; } section.update-signup .floating-serverjoin p { - color: var(--text-secondary); + color: var(--text-shade-1); margin: auto; margin-left: 0; } section.update-signup .floating-serverjoin a { - color: var(--text); + color: var(--text-shade-3); text-decoration: none; - background: var(--theme); + background: var(--accent-shade-0); margin: 0; margin-left: auto; padding: 9px 18px; @@ -680,7 +632,7 @@ section.update-signup .floating-serverjoin a { } section.update-signup div.circle { display: block; - background: #202442; + background: var(--bg-shade-2); /* the next 4 lines make it so the circle is always the same aspect ratio and covers enough of the screen */ width: 2591px; height: 1454px; @@ -693,6 +645,44 @@ section.update-signup div.circle { } /* Progress */ + +.donation-progress { + padding: 50px 20px; + border-radius: 10px; + background: var(--bg-shade-0); + grid-column: span 2; +} +.donation-progress h1 { + display: inline-block; + margin: 0; +} +.donation-progress span { + font-weight: bold; +} +.donation-progress a { + color: var(--accent-shade-1); + text-decoration: none; + font-weight: bold; +} +.donation-progress a:hover { + text-decoration: underline; +} + +.progress-bar { + position: relative; + display: block; + width: 100%; + height: 12px; + margin: 1rem 0; + border-radius: 6px; + background: var(--bg-shade-3); + overflow: hidden; +} +.progress-bar-inner { + height: 100%; + background-color: var(--accent-shade-0); +} + .all-progress-lists { margin-top: 50px; display: grid; @@ -726,7 +716,7 @@ section.update-signup div.circle { } .progress-title a.github { margin-top: 10px; - color: #6D73A2; + color: var(--text-shade-0); display: inline-flex; align-items: center; opacity: .75; @@ -734,7 +724,7 @@ section.update-signup div.circle { transition: color 50ms ease-in-out; } .progress-title a.github:focus, .progress-title a.github:hover, .progress-title a.github:visited { - color: #6D73A2; + color: var(--text-shade-0); text-decoration: none; } .progress-title a.github:hover { @@ -745,7 +735,7 @@ section.update-signup div.circle { margin-right: .4rem; } .feature-list-wrapper.purple .progress-title a.github, .feature-list-wrapper.purple .progress-title a.github:focus, .feature-list-wrapper.purple .progress-title a.github:hover, .feature-list-wrapper.purple .progress-title a.github:visited { - color: #c69cf9; + color: var(--accent-shade-3); } .feature-list-wrapper .core > .progress-title a.github:hover { color: white; @@ -786,8 +776,8 @@ section.update-signup div.circle { .custom-checkbox { width: 1.5rem; height: 1.5rem; - background: #31365A; - color: var(--text); + background: var(--bg-shade-3); + color: var(--text-shade-3); border-radius: 2px; display: flex; justify-content: center; @@ -814,90 +804,7 @@ section.update-signup div.circle { .purple-card { padding: 50px 20px; border-radius: 10px; - background: #151934; -} - -/* Footer */ -footer { - width: 100%; - display: grid; - grid-template-columns: repeat(3, fit-content(100%)) 1fr; - gap: 7.7vw; - color: var(--text-secondary); - margin-top: 120px; - position: relative; - padding: 60px 0; -} -footer::after { - content: ""; - width: 400vw; - height: 100%; - position: absolute; - top: 0; - left: -50vw; - background: #15182D; - z-index: -1; -} -footer div { - display: flex; - flex-flow: column; - width: fit-content; -} -footer svg.logotype { - height: 56px; - width: fit-content; - margin: -10px 0 24px -10px; -} -footer p { - margin: 0; -} -footer h1 { - font-size: 20px; - margin-top: 0; - color: var(--text); -} -footer a { - color: var(--text-secondary); - text-decoration: none; - width: fit-content; -} -footer a:hover { - color: var(--text); - text-decoration: underline; -} -footer div.discord-server-card { - background: #222641; - border-radius: 12px; - padding: 30px 90px 30px 36px; - justify-self: end; -} -footer div.discord-server-card h1 { - font-size: 25px; - margin: 0; -} -footer div.discord-server-card h2 { - color: var(--text); - font-size: 22px; - margin: 0; -} -footer div.discord-server-card a { - display: flex; - align-items: center; - color: #CAB1FB; - font-size: 22px; - text-decoration: none; - width: fit-content; - margin-left: -2px; - margin-top: 12px; -} -footer div.discord-server-card a:hover { - text-decoration: underline; - -} -footer div.discord-server-card svg { - height: 24px; - stroke-width: 3px; - margin-right: 4px; + background: var(--bg-shade-0); } @media screen and (min-width: 701px) and (max-width: 1500px) { @@ -916,8 +823,6 @@ footer div.discord-server-card svg { right: auto; left: 60vw; } - - } @media screen and (max-width: 900px) { @@ -928,20 +833,14 @@ footer div.discord-server-card svg { .feature-list-wrapper { grid-template-columns: 100%; } - - header nav a:not(.keep-on-mobile) { - /* You don't really need it on mobile IMO */ - display: none; - } - - header .logo-link { - margin-right: 20px; + .donation-progress { + grid-column: span 1; } .hero-meta { margin-top: 100px; } - + .wrapper { width: 90%; } @@ -994,15 +893,15 @@ footer div.discord-server-card svg { font-size: 1.1rem; } - + section.showcase { - margin-top: 0; + margin-top: 0; } section.showcase .grid { grid-template-columns: 1fr; grid-template-rows: repeat(3, 1fr); } - + section.team, section.team-helpers { margin-top: 100px; @@ -1039,20 +938,6 @@ footer div.discord-server-card svg { padding-bottom: 90px; } - footer { - margin-top: 100px; - grid-template-columns: repeat(3, 1fr); - grid-template-rows: repeat(2, fit-content(100%)); - } - footer div { - justify-self: center; - } - footer div.discord-server-card { - grid-column: 1 / span 4; - width: calc(100% - 126px); - justify-self: normal; - } - .text { width: 100%; } @@ -1077,7 +962,7 @@ footer div.discord-server-card svg { } section.showcase { - padding: 160px 0; + padding: 160px 0; } section.showcase p.text { margin-bottom: 82px; @@ -1100,7 +985,7 @@ footer div.discord-server-card svg { section.team-helpers .team-helpers-cards { grid-gap: 12px; - margin-right: 12px; + margin-right: 12px; } section.team-helpers .animation-wrapper .helper-card { padding: 7px 18px; @@ -1118,63 +1003,10 @@ footer div.discord-server-card svg { margin: auto !important; } - .selected-locale .locale-names { - display: none; - } - - .selected-locale { - width: 80px; - margin-left: auto; - margin-right: 12px; - } - - .locale-dropdown { - width: fit-content; - } - - .select-box .options-container { - width: 150px; - right: 12px; - } - - footer { - grid-template-columns: 1fr; - grid-template-rows: repeat(4, fit-content(100%)); - } - footer div { - justify-self: start; - } - footer div.discord-server-card { - grid-column: 1 / span 1; - padding: 30px; - width: calc(100% - 60px); - } - } -@media screen and (max-width: 480px) { - header .logo-link svg text { +@media screen and (min-width: 2256px) { + .purple-circle { display: none; } - - header .logo-link svg { - width: 39.876px; - } - - header .logo-link { - margin-right: 10px; - } - header nav a { - margin: 0 10px; - } -} - -@media screen and (max-width: 330px) { - .locale-dropdown .selected-locale { - width: 50px; - } - .locale-dropdown .selected-locale::after { - display: none; - } - -} +} \ No newline at end of file diff --git a/public/assets/css/miieditor.css b/public/assets/css/miieditor.css index bad5146..eb99b14 100644 --- a/public/assets/css/miieditor.css +++ b/public/assets/css/miieditor.css @@ -1,252 +1,709 @@ +html, +body, +div.main-body { + height: 100%; +} + body, div.main-body, .miieditor-wrapper { - z-index: -1; - user-select: none; + z-index: -1; + user-select: none; + background: var(--bg-shade-0); } svg.logotype { - position: absolute; - width: 120px; - top:42px; - left:162px; + position: absolute; + width: 120px; + top: 42px; + left: 60px; } .miieditor-wrapper { - position: relative; - display: grid; - grid-template-columns: 2fr 3fr; - background: #0d0f20; - width: 100vw; - height: 100vh; - gap: 0 48px; -} + position: relative; + display: grid; + grid-template-columns: auto auto; + width: 95vw; + max-width: 1920px; + height: 100%; + margin: auto; + gap: 0 120px; +} +.params-wrapper::before { + content: ""; + display: block; + position: absolute; + background: var(--bg-shade-1); + border-radius: 100% 0 0 100%; + width: 1300px; + height: 1700px; + top: 50%; + transform: translateY(-50%); + left: -200px; + z-index: -1; +} .miieditor-wrapper::after { - content: ""; - display: block; - position: absolute; - background: radial-gradient(closest-side, #161d40 0%, transparent 100%); - width: 200vh; - height: 200vh; - top: -100vh; - left: -100vh; - z-index: -1; + content: ""; + display: block; + position: absolute; + background: radial-gradient( + closest-side, + var(--bg-shade-1) 0%, + rgba(27, 31, 59, 0) 100% + ); + width: 200vh; + height: 200vh; + top: -100vh; + left: -100vh; + z-index: -1; } -div.mii-img-wrapper { - position: relative; - margin: auto; - max-width: 512px; - width: 26vw; - height: auto; +.canvas-wrapper { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + overflow: hidden; } -img#mii-img { - position: relative; - width: 512px; - height: auto; - z-index: 2; + +canvas#miiCanvas { + width: auto; + height: auto; + transform-origin: center; + transition: transform 200ms, filter 200ms; } -div.mii-img-wrapper .shadow { - position: absolute; - bottom: -18px; - left: 6px; - height: 72px; - width: 512px; - background: #1a214c; - background: radial-gradient(farthest-side, #1a214c 0%, transparent 100%); + +div.mii-img-wrapper::before { + content: ""; + position: absolute; + bottom: -22px; + height: 72px; + width: 100%; + background: radial-gradient( + farthest-side, + var(--bg-shade-2) 0%, + rgba(35, 39, 74, 0) 100% + ); } div.params-wrapper { - position: relative; - overflow-x: visible; - margin: auto; - margin-top: 150px; - margin-right: 100px; - display: grid; - z-index: 3; + position: relative; + margin: auto; + display: grid; + z-index: 3; } div.tabs { - display: grid; - grid-auto-flow: column; - width: fit-content; - gap: 2px; - background: #0A0C19; - padding: 6px; - border-radius: 6px; - margin-bottom: 32px; + display: grid; + grid-template-columns: repeat(11, 1fr); + width: 100%; + box-sizing: border-box; + background: #0a0c19; + padding: 6px; + gap: 6px; + border-radius: 6px; + margin-bottom: 2rem; } div.tabs .tabbtn { - min-width: 42px; - min-height: 42px; - border: none; - border-radius: 6px; - cursor: pointer; - background: none; - color: var(--text); + display: flex; + align-items: center; + justify-content: center; + aspect-ratio: 1; + border-radius: 6px; + background: none; + padding: 0; +} +div.tabs .tabbtn::after { + content: ""; + display: block; + width: 12px; + height: 12px; + background: url("/assets/images/miieditor.svg"); + background-position: calc(var(--assetcol) * -12px) -312px; + transform: scale(2.9); } div.tabs .tabbtn:hover, div.tabs .tabbtn.active { - background: #1d203d; + background: var(--bg-shade-2); } div.subtabs { - position: relative; - grid-column: 1 / span 2; + position: relative; + display: flex; + width: fit-content; } div.subtabs .subtabbtn { - position: relative; - border: none; - padding: 12px; - border-radius: 6px; - cursor: pointer; - background: none; - color: var(--text); + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 60px; + border-radius: 6px; + background: none; + padding: 0; + color: var(--text-shade-3); + aspect-ratio: 1; +} +div.subtabs .subtabbtn::after { + content: ""; + display: block; + width: 12px; + height: 12px; + background: url("/assets/images/miieditor.svg"); + background-position: calc(var(--assetcol) * -12px) -324px; + transform: scale(2.9); } div.subtabs .subtabbtn.active::before, div.subtabs .subtabbtn.active:hover::before { - content: ""; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 5px; - background: #9D6FF3; - border-radius: 6px; + content: ""; + position: absolute; + bottom: -2px; + left: 5%; + width: 90%; + height: 5px; + background: var(--accent-shade-1); + border-radius: 6px; } -.subtab.has-sliders { - grid-template-columns: 1fr 1fr; +.has-sliders { + grid-template-columns: 60px auto; + gap: 12px; +} +.has-sliders label { + position: relative; + display: flex; + width: 60px; + height: 60px; + align-items: center; + justify-content: center; +} +.has-sliders label::after { + content: ""; + display: block; + width: 16px; + height: 16px; + background: url("/assets/images/miieditor.svg"); + background-position: calc(var(--assetcol) * -16px) -336px; + transform: scale(3); +} + +.has-textinput { + grid-template-columns: 1fr 1fr; + grid-template-rows: auto; + grid-auto-rows: auto; + gap: 24px; +} +.has-textinput label { + display: block; + margin-bottom: 6px; + text-transform: uppercase; + font-size: 12px; +} + +.has-textinput .icons { + display: flex; + flex-flow: row nowrap; + justify-content: space-between; +} +.has-textinput .icons input[type="checkbox"] { + box-sizing: border-box; + margin: 0; + height: 49px; + width: 49px; +} + +input[type="checkbox"]#allowCopying:checked { + background: no-repeat center/80% url(../images/copy.svg), var(--accent-shade-0); +} +input[type="checkbox"]#disableSharing:checked { + background: no-repeat center/80% url(../images/share.svg), var(--accent-shade-0); +} +input[type="checkbox"]#favorite:checked { + background: no-repeat center/80% url(../images/star.svg), var(--accent-shade-0); } form.params { - grid-template-columns: repeat(2, auto); + grid-template-columns: repeat(2, auto); + height: 618px; + width: 582px; } form.params .tab { - display: none; - grid-template-columns: 534px 258px; - gap: 48px; + display: none; + gap: 4rem 0; } form.params .tab.active { - display: grid; + display: grid; } -fieldset { - appearance: none; - border: none; - padding: 0; - margin: 0; - display: none; - grid-template-columns: repeat(4, 1fr); - gap: 18px; - width: fit-content; - height: fit-content; - grid-row: 2; +fieldset, +fieldset.has-subpages .subpage { + appearance: none; + border: none; + padding: 0; + margin: 0; + display: none; + grid-template-columns: repeat(4, 1fr); + grid-template-rows: repeat(4, 1fr); + gap: 18px; + width: 100%; + height: fit-content; } fieldset.active { - display: grid; -} -fieldset.color { - grid-template-columns: repeat(2, 1fr); - display: grid; - grid-column: 2; + display: grid; } fieldset input[type="radio"] { - display: none; + display: none; } fieldset input[type="radio"] + label { - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - border-radius: 18px; - background: #393b5f; - width: 120px; - height: 120px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + border-radius: 18px; + background: var(--bg-shade-3); + width: 100%; + aspect-ratio: 1; } -fieldset input[type="radio"]:checked + label { - background: #3f4480; - font-weight: bold; - box-shadow: inset 0 0 0 4px #9D70F1; -} -fieldset.color input[type="radio"]:checked + label { - box-shadow: inset 0 0 0 4px #9D70F1, inset 0 0 0 6px #181B33; -} -div.colorSidebar { - margin: auto; -} - fieldset.has-subpages.active { - display: block; -} -fieldset.has-subpages .subpage { - display: none; - grid-template-columns: repeat(4, 1fr); - gap: 18px; - width: fit-content; - height: fit-content; + display: block; } fieldset.has-subpages .subpage.active { - display: grid; + display: grid; +} + +fieldset:not(.color, #favoriteColor) input[type="radio"] + label::after { + content: ""; + display: block; + width: 24px; + height: 24px; + background: url("/assets/images/miieditor.svg"); + background-position: calc( + ((var(--assetcol) + (var(--subpage, 0) * 12)) * -24px) + ) + calc(var(--assetrow) * -24px); + transform: scale(4.5); +} + +fieldset input[type="radio"]:checked + label { + background: var(--bg-shade-4); + box-shadow: inset 0 0 0 4px var(--accent-shade-1); +} +fieldset.color input[type="radio"]:checked + label, +fieldset#favoriteColor input[type="radio"]:checked + label { + box-shadow: inset 0 0 0 4px var(--accent-shade-1), + inset 0 0 0 6px var(--bg-shade-1); } input[type="range"].invert { - direction: rtl; + direction: rtl; } .pagination { - display: flex; - flex-flow: row; - width: max-content; - grid-column: 3 / span 2; - grid-row: 4; - margin-left: auto; - align-items: center; - font-size: 18px; - color: var(--text-secondary); + display: flex; + width: max-content; + height: fit-content; + grid-column: 1 / span 4; + grid-row: 4; + margin-left: auto; + align-items: center; + font-size: 18px; + color: var(--text-shade-1); } .pagination .current-page-index { - display: inline-block; - font-weight: bold; - color: var(--text); - width: 18px; - margin-right: 0.7ch; - text-align: right; + display: inline-block; + font-weight: bold; + color: var(--text-shade-3); + width: 18px; + margin-right: 0.5ch; + text-align: right; } - .page-btn { - appearance: none; - border: none; - background: none; - cursor: pointer; + appearance: none; + border: none; + background: none; + cursor: pointer; + padding: 0; + margin-left: 8px; } -.page-btn svg{ - height: 36px; - margin: 6px +.page-btn:hover { + background: none; +} +.page-btn:hover svg path { + fill: var(--accent-shade-3); +} +.page-btn svg { + height: 36px; + margin: 6px; } .page-btn.disabled { - pointer-events: none; + pointer-events: none; } .page-btn.disabled svg path { - fill: #393B5F; + fill: var(--bg-shade-3); +} + +.tab#saveTab { + gap: 2rem 0; +} +.tab#saveTab p.save-prompt { + margin-bottom: 0; + text-align: center; +} + +.mii-comparison-animation-wrapper { + position: relative; + height: fit-content; +} +.mii-comparison { + position: relative; + display: grid; + grid-template-columns: repeat(3, auto); + align-items: center; + width: 100%; +} +.mii-comparison.confirmed { + position: absolute; + height: 100%; + top: 0; + left: 0; + opacity: 0; + overflow: hidden; +} +.mii-comparison img { + display: block; + width: 100%; + aspect-ratio: 1; + background: var(--bg-shade-3); + border-radius: 24px; +} + +.mii-comparison .new-mii-wrapper { + position: relative; + transition: right 500ms, transform 500ms; + right: 0; +} +.mii-comparison .new-mii-wrapper::after { + position: absolute; + content: ""; + display: block; + box-shadow: inset 0 0 0 8px var(--accent-shade-1); + border-radius: 24px; + margin: 0; + right: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 2; +} + +.mii-comparison svg { + width: 72px; + height: 72px; +} +.mii-comparison svg path { + fill: var(--accent-shade-1); +} + +.fade-in { + animation: fadeIn 0.25s forwards; +} +.fade-out { + animation: fadeOut 0.5s forwards; +} +.mii-comparison div.new-mii-wrapper.centered-mii-img { + position: absolute; + right: 50%; + transform: translateX(50%); + height: 100%; + aspect-ratio: 1; + width: auto; +} +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fadeOut { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } } button * { - pointer-events: none; + pointer-events: none; } -.miieditor-wrapper::before { - content: ""; - display: block; - position: absolute; - background: #181B33; - border-radius: 100%; - width: 1308px; - height: 1707px; - top: 50%; - transform: translateY(-50%); - right: -200px; - z-index: 0; +@media screen and (max-width: 1400px) { + form.params { + height: 562px; + width: 512px; + } + + fieldset, + fieldset.has-subpages .subpage { + gap: 12px; + } + + div.params-wrapper { + margin-right: 24px; + } + + .params-wrapper::before { + left: -150px; + } + + div.tabs { + padding: 4px; + gap: 2px; + } } +@media screen and (max-width: 1280px) { + form.params { + height: 492px; + width: 480px; + } + + fieldset, + fieldset.has-subpages .subpage { + gap: 8px; + } + + div.params-wrapper { + margin-right: 24px; + } + + .params-wrapper::before { + left: -150px; + } + + fieldset:not(.color, #favoriteColor) input[type="radio"] + label::after { + transform: scale(4); + } + + div.subtabs .subtabbtn::after, + div.tabs .tabbtn::after { + transform: scale(2.4); + } + div.subtabs .subtabbtn { + width: 48px; + } + + .params-wrapper::before { + left: -100px; + } + + div.tabs { + margin-bottom: 1rem; + } + + form.params .tab { + gap: 2rem 0; + } +} + +@media screen and (max-width: 1120px) { + form.params { + height: 444px; + width: 420px; + } + + fieldset, + fieldset.has-subpages .subpage { + gap: 6px; + } +} + +@media screen and (max-width: 1080px) { + .canvas-wrapper { + height: calc(100% - 12px); + } + + svg.logotype { + left: 0; + } + svg.logotype text#Pretendo { + display: none; + } + + .miieditor-wrapper { + grid-template-columns: auto; + grid-template-rows: auto fit-content(100%); + margin: auto; + max-width: 360px; + width: 90vw; + } + + div.params-wrapper { + width: 100%; + margin: 0 auto; + display: flex; + flex-flow: column; + } + div.tabs, + div.subtabs { + order: 2; + margin-top: 1rem; + } + + fieldset { + order: 1; + } + + form.params { + width: 100%; + height: 100%; + order: 1; + } + fieldset input[type="radio"] + label { + width: 100%; + height: auto; + border-radius: 8px; + aspect-ratio: 1; + } + fieldset:not(.color, #favoriteColor) input[type="radio"] + label::after { + transform: scale(3.5); + } + + .has-sliders { + overflow-y: auto; + overflow-x: hidden; + height: 100%; + gap: 2px 6px; + scrollbar-width: thin; + scrollbar-color: var(--text-shade-1) var(--bg-shade-3); + } + .has-sliders::-webkit-scrollbar { + width: 12px; + background: var(--bg-shade-3); + border-radius: 9px; + } + .has-sliders::-webkit-scrollbar-thumb { + background: var(--text-shade-1); + border-radius: 9px; + } + + .params-wrapper::before { + top: -12px; + left: -100vw; + width: 300vw; + border-radius: 0; + background: var(--bg-shade-2); + transform: none; + } + + fieldset, + fieldset.has-subpages .subpage { + grid-template-columns: repeat(4, 1fr); + grid-template-rows: repeat(3, 1fr) 48px; + width: 100%; + gap: 8px; + } + + .pagination { + grid-column: 1 / span 4; + grid-row: 4; + } + + fieldset:not(.has-sliders, .has-textinput) { + position: relative; + margin-bottom: -60px; + } + + div.tabs { + margin-bottom: 1rem; + } + + form.params .tab { + gap: 0; + height: 100%; + } + + div.subtabs { + z-index: 4; + } + + form.params { + grid-template-columns: repeat(2, auto); + } + + div.tabs .tabbtn::after, + div.subtabs .subtabbtn::after, + .has-sliders label::after { + transform: scale(2); + } + + div.subtabs .subtabbtn { + width: 48px; + height: 48px; + } +} + +@media screen and (max-width: 424px) { + fieldset:not(.color, #favoriteColor) input[type="radio"] + label::after { + transform: scale(2.8); + } +} + +@media screen and (max-width: 396px) { + div.tabs .tabbtn::after, + div.subtabs .subtabbtn::after, + .has-sliders label::after { + transform: scale(1.5); + } + + div.tabs .tabbtn { + width: 24px; + height: 24px; + } + div.subtabs .subtabbtn { + width: 36px; + height: 36px; + } + + div.pagination { + transform: scale(0.7); + transform-origin: right; + } + + .has-textinput { + grid-template-columns: 1fr; + } +} + +@media screen and (max-width: 360px) { + fieldset, + fieldset.has-subpages .subpage { + gap: 4px; + } + + fieldset input[type="radio"]:checked + label { + box-shadow: inset 0 0 0 3px var(--accent-shade-1); + } +} + +@media screen and (max-width: 344px) { + fieldset:not(.color, #favoriteColor) input[type="radio"] + label::after { + transform: scale(2); + } +} + +@media screen and (max-width: 320px) { + div.tabs .tabbtn { + width: 18px; + height: 18px; + } + + div.tabs .tabbtn::after { + transform: scale(1.25); + } +} diff --git a/public/assets/css/partials/footer.css b/public/assets/css/partials/footer.css new file mode 100644 index 0000000..8e64a29 --- /dev/null +++ b/public/assets/css/partials/footer.css @@ -0,0 +1,198 @@ +footer { + width: 100%; + display: grid; + grid-template-columns: repeat(3, fit-content(100%)) 1fr; + gap: min(48px, 7.7vw); + color: var(--text-shade-1); + margin-top: 120px; + position: relative; + padding: 60px 0; +} +footer::after { + content: ""; + width: 400vw; + height: 100%; + position: absolute; + top: 0; + left: -50vw; + background: var(--bg-shade-0); + z-index: -1; +} +footer div { + display: flex; + flex-flow: column; + width: fit-content; +} +footer svg.logotype { + height: 56px; + width: fit-content; + margin: -10px 0 24px -10px; +} +footer p { + margin: 0; +} +footer h1 { + font-size: 20px; + margin-top: 0; + color: var(--text-shade-3); +} +footer a { + color: var(--text-shade-1); + text-decoration: none; + width: fit-content; +} +footer a:hover { + color: var(--text-shade-3); + text-decoration: underline; +} +footer div.discord-server-card-wrapper { + z-index: 2; + justify-self: end; + position: relative; +} +footer div.discord-server-card { + background: var(--bg-shade-2); + border-radius: 12px; + padding: 30px 90px 30px 36px; +} +footer div.discord-server-card h1 { + font-size: 25px; + margin: 0; +} +footer div.discord-server-card h2 { + color: var(--text-shade-3); + font-size: 22px; + margin: 0; +} +footer div.discord-server-card a { + display: flex; + align-items: center; + color: var(--accent-shade-3); + font-size: 22px; + text-decoration: none; + width: fit-content; + margin-left: -2px; + margin-top: 12px; +} +footer div.discord-server-card a:hover { + text-decoration: underline; +} +footer div.discord-server-card svg { + height: 24px; + stroke-width: 3px; + margin-right: 4px; +} +footer div.discord-server-card-wrapper .bandwidth-raccoon-wrapper { + position: absolute; + top: -120px; + right: 0px; + z-index: -1; +} +footer div.discord-server-card-wrapper img.bandwidth-raccoon { + width: 192px; + height: 192px; + cursor: pointer; + transform: none; + transition: transform 150ms; +} +footer div.bandwidth-raccoon-wrapper.speak img.bandwidth-raccoon { + transform: rotate(12deg) translateY(-12px); +} +footer .bandwidth-raccoon-wrapper .text-bubble { + position: absolute; + right: 0; + margin: 0 auto; + top: -24px; + max-width: min(200%, 90vw); + width: max-content; + background: var(--bg-shade-3); + padding: 18px; + align-self: center; + margin-bottom: 12px; + border-radius: 12px; + box-sizing: border-box; + transform: translateY(-100%); + opacity: 0; + pointer-events: none; + transition: opacity 250ms; +} +footer .bandwidth-raccoon-wrapper.speak .text-bubble { + opacity: 1; +} +footer .bandwidth-raccoon-wrapper .text-bubble:after { + content: ""; + position: absolute; + display: block; + width: 0; + z-index: 1; + border-style: solid; + border-color: var(--bg-shade-3) transparent; + border-width: 10px 10px 0; + bottom: -10px; + right: 60px; + margin-left: -10px; +} + +@media screen and (max-width: 900px) { + footer { + margin-top: 100px; + grid-template-columns: repeat(3, 1fr); + grid-template-rows: repeat(2, fit-content(100%)); + } + footer div { + justify-self: center; + } + footer div.discord-server-card-wrapper { + grid-column: 1 / span 4; + width: 100%; + justify-self: normal; + } + footer div.discord-server-card-wrapper::before { + content: ""; + width: 100%; + height: 60px; + position: absolute; + bottom: -60px; + left: 0; + background: var(--bg-shade-0); + z-index: 2; + } + footer div.discord-server-card-wrapper .bandwidth-raccoon-wrapper { + bottom: -72px; + top: unset; + z-index: 0; + } + footer div.discord-server-card { + box-sizing: border-box; + width: 100%; + overflow: hidden; + } +} + +@media screen and (max-width: 580px) { + footer { + grid-template-columns: 1fr; + grid-template-rows: repeat(4, fit-content(100%)); + } + footer div { + justify-self: start; + } + footer div.discord-server-card-wrapper { + grid-column: 1 / span 1; + } + footer div.discord-server-card { + padding: 30px; + overflow: visible; + } + footer div.discord-server-card-wrapper .bandwidth-raccoon-wrapper { + bottom: unset; + top: -120px; + z-index: -1; + } +} + +@media screen and (max-width: 320px) { + footer div.discord-server-card-wrapper .bandwidth-raccoon-wrapper { + display: none; + } +} diff --git a/public/assets/css/partials/header.css b/public/assets/css/partials/header.css new file mode 100644 index 0000000..3d95b73 --- /dev/null +++ b/public/assets/css/partials/header.css @@ -0,0 +1,155 @@ +header { + display: flex; + align-items: center; + margin-top: 35px; +} +header a { + text-decoration: none; +} +header .logo-link, +header .logo-link svg { + display: block; +} +header nav a:first-child { + margin-left: 40px; +} +header nav a { + color: var(--text-shade-1); + margin: 0 17px; + text-decoration: none; +} +header nav a:hover { + color: var(--text-shade-3); + transition: color 50ms ease-in-out; +} + +header .right-section { + display: grid; + grid-auto-flow: column; + grid-gap: 24px; + margin-left: auto; + z-index: 2; + color: var(--text-shade-1); +} + +header .locale-dropdown-toggle { + width: fit-content; + height: 24px; + padding: 0; + margin: auto; + transition: color 150ms; + cursor: pointer; +} +header .locale-dropdown-toggle:hover, +header .locale-dropdown-toggle.active { + color: var(--text-shade-3); +} + +header .user-widget-wrapper { + height: 24px; +} + +header .user-widget-wrapper a.login-link { + color: var(--text-shade-1); + text-decoration: none; + transition: color 150ms; +} +header .user-widget-wrapper a.login-link:hover { + color: var(--text-shade-3); +} + +header .user-widget-wrapper.logged-in { + position: relative; + width: 32px; + height: 32px; +} +header .user-widget-wrapper.logged-in .user-widget-toggle { + width: 32px; + height: 32px; + background: var(--text-shade-0); + border-radius: 50%; + overflow: hidden; + cursor: pointer; +} +header .user-widget-wrapper .user-widget-toggle img, +header .user-widget .user-avatar img { + width: 100%; + height: 100%; +} +header .user-widget { + max-height: 0; + overflow: hidden; + + box-sizing: border-box; + transition: max-height 300ms, padding 200ms, opacity 150ms; + + position: absolute; + right: 0; + top: 48px; + padding: 0; + background: var(--bg-shade-2); + border-radius: 8px; + text-align: center; + opacity: 0; + + box-shadow: 0 0 10px -2px var(--bg-shade-0); +} +header .user-widget.active { + max-height: 100vh; + padding: 36px; + opacity: 1; +} +header .user-widget .user-avatar { + width: 128px; + height: 128px; + margin: auto; + background: var(--text-shade-0); + border-radius: 50%; + overflow: hidden; +} +header .user-widget .user-info { + margin-top: 12px; +} +header .user-widget .user-info .mii-name { + color: var(--text-shade-3); +} +header .user-widget .buttons { + margin-top: 12px; +} +header .user-widget .button { + margin-top: 12px; + width: 100%; + padding: 8px 60px; + cursor: pointer; +} +header .user-widget .button.logout { + background: var(--bg-shade-3); + color: var(--text-shade-3); +} + +@media screen and (max-width: 900px) { + header nav a:not(.keep-on-mobile) { + display: none; + } + + header .logo-link { + margin-right: 20px; + } +} + +@media screen and (max-width: 480px) { + header .logo-link svg text { + display: none; + } + + header .logo-link svg { + width: 39.876px; + } + + header .logo-link { + margin-right: 10px; + } + header nav a { + margin: 0 10px; + } +} diff --git a/public/assets/css/progress.css b/public/assets/css/progress.css index 0a6cfce..18e77df 100644 --- a/public/assets/css/progress.css +++ b/public/assets/css/progress.css @@ -1,3 +1,13 @@ /* MOVE PROGRESS CSS HERE -*/ \ No newline at end of file +*/ +#quick-nav a { + color: var(--text-shade-1); + text-decoration: none; + width: fit-content; +} + +#quick-nav a:hover { + color: var(--text-shade-3); + text-decoration: underline; +} \ No newline at end of file diff --git a/public/assets/css/upgrade.css b/public/assets/css/upgrade.css new file mode 100644 index 0000000..60bde0b --- /dev/null +++ b/public/assets/css/upgrade.css @@ -0,0 +1,308 @@ +.wrapper { + display: flex; + justify-content: center; + text-align: center; + min-height: 100vh; +} +.wrapper::before { + position: absolute; + top: -800px; + content: ""; + background: var(--bg-shade-0); + border-radius: 100%; + width: 1600px; + height: 1400px; +} + +.back-arrow { + position: absolute; + display: flex; + justify-content: center; + top: 36px; + left: max(calc((100vw - 1590px) / 2), 2.5vw); + padding: 6px 10px; + background: var(--bg-shade-3); + border-radius: 24px; + + transition: filter 150ms; + text-decoration: none; + color: var(--text-shade-3); + z-index: 5; +} +.back-arrow:hover { + filter: brightness(1.5) +} +.back-arrow svg { + width: 24px; + height: 24px; +} +.back-arrow span { + margin: 0 4px; +} + +.account-form-wrapper { + display: flex; + flex-flow: column; + width: min(1200px, 100%); + color: var(--text-shade-1); + margin: 0 auto 48px; + z-index: 1; +} + +.account-form-wrapper .logotype { + margin: 36px auto 0; + width: fit-content; +} + +h1.title { + color: var(--text-shade-3); +} +p.caption { + width: min(100%, 500px); + margin: 0 auto 36px; +} + +.account-form-wrapper .progress-bar-wrapper { + justify-content: center; + width: min(100%, 500px); + margin: 0 auto 72px; + padding: 24px; + border-radius: 6px; + background: var(--bg-shade-2); + box-sizing: border-box; +} +.account-form-wrapper .progress-bar-wrapper p { + text-align: left; + margin-bottom: 0; +} +.account-form-wrapper .progress-bar-wrapper p span { + color: var(--text-shade-3); + font-weight: 600; +} + +.account-form-wrapper .progress-bar { + height: 8px; + border-radius: 4px; + margin-top: 0; +} + +form { + box-sizing: border-box; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.3rem; +} + +form .tier-radio { + display: none; +} +form .tier-radio:checked + label::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: inset 0 0 0 4px var(--accent-shade-1); + border-radius: 10px; +} +form .tier-radio:checked + label::after { + content: url(/assets/images/check.svg); + display: flex; + justify-content: center; + background: var(--accent-shade-1); + width: 24px; + height: 24px; + border-radius: 100%; + position: absolute; + top: -16px; + right: -16px; + padding: 6px; +} + +label.tier { + display: flex; + flex-flow: column; + position: relative; + border-radius: 10px; + align-items: center; + padding-top: calc(50px + 1rem); + background: var(--bg-shade-3); + cursor: pointer; + transition: all 150ms; + margin-top: 50px; + text-align: center; +} + +label.tier p { + margin: 0; + margin-bottom: 0.5rem; +} + +label.tier .tier-thumbnail { + height: 100px; + width: 100px; + display: flex; + align-items: center; + overflow: hidden; + border-radius: 8px; + position: absolute; + top: -50px; + z-index: 2; + background: var(--bg-shade-4); +} +form .tier-radio:checked + label .tier-thumbnail::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: inset 0 0 0 4px var(--accent-shade-1); + border-radius: 8px; +} + +label.tier .tier-text { + display: flex; + flex-flow: column; + margin-bottom: auto; +} + +label.tier .tier-name { + color: var(--text-shade-3); + font-weight: bold; + font-size: 1.2rem; +} + +label.tier .tier-perks { + text-align: left; + width: 70%; + margin: 24px auto 48px; +} +label.tier .tier-perks div { + display: grid; + grid-template-columns: 16px auto; + gap: 8px; +} +label.tier .tier-perks svg { + stroke-width: 5px; + stroke: var(--green-shade-1); + stroke-linecap: square; + width: 16px; + height: 16px; + vertical-align: top; + margin-top: 0.5ex; +} + +label.tier p.price { + display: flex; + width: 100%; + justify-content: center; + align-items: center; + background: var(--bg-shade-4); + margin: 0; + padding: 1.5rem 1rem; + box-sizing: border-box; + border-radius: 0 0 10px 10px; +} +label.tier p.price span { + font-size: 2rem; + color: var(--text-shade-3); + font-weight: bold; + margin-right: 0.5ch; +} + +form .button-wrapper { + grid-column: 2 / span 1; + position: relative; + margin-top: 24px; +} +button { + appearance: none; + -webkit-appearance: none; + display: block; + font-family: Poppins, Arial, Helvetica, sans-serif; + font-size: 1rem; + height: fit-content; + + background: var(--accent-shade-0); + border: none; + border-radius: 4px; + padding: 12px; + color: var(--text-shade-3); + width: 100%; + + transition: filter 300ms; + pointer-events: all; + cursor: pointer; + filter: none; +} +form button.disabled { + pointer-events: none; + filter: brightness(0.75) saturate(0.75); /* not using opacity here 'cause in the mobile layout you would see the cards under it */ + cursor: default; +} + +form button.unsubscribe { + position: relative; + background: none; + color: var(--text-shade-1); + margin-top: 12px; + padding: 0; +} +form button.unsubscribe.hidden { + position: absolute; + top: 0; + pointer-events: none; + z-index: -1; +} +form button.unsubscribe:hover { + color: var(--text-shade-3); +} + +@media screen and (max-width: 900px) { + .account-form-wrapper { + width: min(500px, 100%); + margin-bottom: 172px; + } + + form { + grid-template-columns: 1fr; + gap: 2.4rem; + } + + form button { + position: relative; + width: 100%; + } + form .button-wrapper { + grid-column: 1 / span 1; + position: fixed; + bottom: 24px; + width: min(500px, 90%); + z-index: 5; + } + form .button-wrapper::before { + content: ""; + position: absolute; + top: -24px; + left: -100vw; + width: 200vw; + height: 300%; + background: var(--bg-shade-0); + } +} + + + +@media screen and (max-width: 380px) { + label.tier .tier-perks { + width: 80%; + } + .back-arrow { + padding: 6px; + } + .back-arrow span { + display: none; + } +} diff --git a/public/assets/images/bandwidth.svg b/public/assets/images/bandwidth.svg new file mode 100644 index 0000000..9679c40 --- /dev/null +++ b/public/assets/images/bandwidth.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/check.svg b/public/assets/images/check.svg index 7b165ec..255d0dd 100644 --- a/public/assets/images/check.svg +++ b/public/assets/images/check.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/public/assets/images/copy.svg b/public/assets/images/copy.svg new file mode 100644 index 0000000..67e47f7 --- /dev/null +++ b/public/assets/images/copy.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/arrow-right.svg b/public/assets/images/docs/arrow-right.svg similarity index 81% rename from public/assets/images/arrow-right.svg rename to public/assets/images/docs/arrow-right.svg index 939b57c..c88f022 100644 --- a/public/assets/images/arrow-right.svg +++ b/public/assets/images/docs/arrow-right.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/public/assets/images/docs/errors/pc-3ds-1.png b/public/assets/images/docs/errors/pc-3ds-1.png new file mode 100644 index 0000000..94bc36d Binary files /dev/null and b/public/assets/images/docs/errors/pc-3ds-1.png differ diff --git a/public/assets/images/docs/errors/pc-3ds-2.png b/public/assets/images/docs/errors/pc-3ds-2.png new file mode 100644 index 0000000..84d269f Binary files /dev/null and b/public/assets/images/docs/errors/pc-3ds-2.png differ diff --git a/public/assets/images/docs/errors/pc-3ds-3.png b/public/assets/images/docs/errors/pc-3ds-3.png new file mode 100644 index 0000000..eced299 Binary files /dev/null and b/public/assets/images/docs/errors/pc-3ds-3.png differ diff --git a/public/assets/images/docs/errors/pc-3ds-4.png b/public/assets/images/docs/errors/pc-3ds-4.png new file mode 100644 index 0000000..5862a77 Binary files /dev/null and b/public/assets/images/docs/errors/pc-3ds-4.png differ diff --git a/public/assets/images/docs/errors/pc-3ds-5.png b/public/assets/images/docs/errors/pc-3ds-5.png new file mode 100644 index 0000000..34fddba Binary files /dev/null and b/public/assets/images/docs/errors/pc-3ds-5.png differ diff --git a/public/assets/images/docs/errors/pc-3ds-6.png b/public/assets/images/docs/errors/pc-3ds-6.png new file mode 100644 index 0000000..5ea41de Binary files /dev/null and b/public/assets/images/docs/errors/pc-3ds-6.png differ diff --git a/public/assets/images/docs/errors/pc-wiiu-1.jpeg b/public/assets/images/docs/errors/pc-wiiu-1.jpeg new file mode 100644 index 0000000..634a3c7 Binary files /dev/null and b/public/assets/images/docs/errors/pc-wiiu-1.jpeg differ diff --git a/public/assets/images/docs/errors/pc-wiiu-2.jpeg b/public/assets/images/docs/errors/pc-wiiu-2.jpeg new file mode 100644 index 0000000..8813752 Binary files /dev/null and b/public/assets/images/docs/errors/pc-wiiu-2.jpeg differ diff --git a/public/assets/images/docs/errors/pc-wiiu-3.jpeg b/public/assets/images/docs/errors/pc-wiiu-3.jpeg new file mode 100644 index 0000000..c08c394 Binary files /dev/null and b/public/assets/images/docs/errors/pc-wiiu-3.jpeg differ diff --git a/public/assets/images/docs/errors/pc-wiiu-4.jpeg b/public/assets/images/docs/errors/pc-wiiu-4.jpeg new file mode 100644 index 0000000..9418564 Binary files /dev/null and b/public/assets/images/docs/errors/pc-wiiu-4.jpeg differ diff --git a/public/assets/images/docs/errors/pc-wiiu-5.jpeg b/public/assets/images/docs/errors/pc-wiiu-5.jpeg new file mode 100644 index 0000000..a37dcb6 Binary files /dev/null and b/public/assets/images/docs/errors/pc-wiiu-5.jpeg differ diff --git a/public/assets/images/docs/install/3ds/releases-highlight.png b/public/assets/images/docs/install/3ds/releases-highlight.png new file mode 100644 index 0000000..a39f823 Binary files /dev/null and b/public/assets/images/docs/install/3ds/releases-highlight.png differ diff --git a/public/assets/images/docs/install/3ds/sd-card-3ds.png b/public/assets/images/docs/install/3ds/sd-card-3ds.png new file mode 100644 index 0000000..42b9e08 Binary files /dev/null and b/public/assets/images/docs/install/3ds/sd-card-3ds.png differ diff --git a/public/assets/images/docs/install/3ds/sd-card-luma.png b/public/assets/images/docs/install/3ds/sd-card-luma.png new file mode 100644 index 0000000..855c9e9 Binary files /dev/null and b/public/assets/images/docs/install/3ds/sd-card-luma.png differ diff --git a/public/assets/images/docs/install/3ds/zip-highlight.png b/public/assets/images/docs/install/3ds/zip-highlight.png new file mode 100644 index 0000000..4e50229 Binary files /dev/null and b/public/assets/images/docs/install/3ds/zip-highlight.png differ diff --git a/public/assets/images/docs/install/cemu/download-account-files.png b/public/assets/images/docs/install/cemu/download-account-files.png new file mode 100644 index 0000000..12fccfa Binary files /dev/null and b/public/assets/images/docs/install/cemu/download-account-files.png differ diff --git a/public/assets/images/docs/install/icons/2ds.svg b/public/assets/images/docs/install/icons/2ds.svg new file mode 100644 index 0000000..b37e926 --- /dev/null +++ b/public/assets/images/docs/install/icons/2ds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/images/docs/install/icons/cemu.svg b/public/assets/images/docs/install/icons/cemu.svg new file mode 100644 index 0000000..5c6c4b9 --- /dev/null +++ b/public/assets/images/docs/install/icons/cemu.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/docs/install/icons/citra.svg b/public/assets/images/docs/install/icons/citra.svg new file mode 100644 index 0000000..99a3c9f --- /dev/null +++ b/public/assets/images/docs/install/icons/citra.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/docs/install/icons/wiiu-gamepad.svg b/public/assets/images/docs/install/icons/wiiu-gamepad.svg new file mode 100644 index 0000000..1456118 --- /dev/null +++ b/public/assets/images/docs/install/icons/wiiu-gamepad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/images/docs/install/juxt/3ds-sd-card.png b/public/assets/images/docs/install/juxt/3ds-sd-card.png new file mode 100644 index 0000000..06c6f6b Binary files /dev/null and b/public/assets/images/docs/install/juxt/3ds-sd-card.png differ diff --git a/public/assets/images/docs/install/juxt/martini-download.png b/public/assets/images/docs/install/juxt/martini-download.png new file mode 100644 index 0000000..06d5294 Binary files /dev/null and b/public/assets/images/docs/install/juxt/martini-download.png differ diff --git a/public/assets/images/docs/install/juxt/martini-hbl.png b/public/assets/images/docs/install/juxt/martini-hbl.png new file mode 100644 index 0000000..a0fff71 Binary files /dev/null and b/public/assets/images/docs/install/juxt/martini-hbl.png differ diff --git a/public/assets/images/docs/install/juxt/martini-highlight.png b/public/assets/images/docs/install/juxt/martini-highlight.png new file mode 100644 index 0000000..1d7672e Binary files /dev/null and b/public/assets/images/docs/install/juxt/martini-highlight.png differ diff --git a/public/assets/images/docs/install/juxt/martini-install.png b/public/assets/images/docs/install/juxt/martini-install.png new file mode 100644 index 0000000..1d5de5d Binary files /dev/null and b/public/assets/images/docs/install/juxt/martini-install.png differ diff --git a/public/assets/images/docs/install/juxt/martini-sd-card.png b/public/assets/images/docs/install/juxt/martini-sd-card.png new file mode 100644 index 0000000..6ddc46a Binary files /dev/null and b/public/assets/images/docs/install/juxt/martini-sd-card.png differ diff --git a/public/assets/images/docs/install/juxt/martini-success.png b/public/assets/images/docs/install/juxt/martini-success.png new file mode 100644 index 0000000..eb2927f Binary files /dev/null and b/public/assets/images/docs/install/juxt/martini-success.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/actions-highlight.png b/public/assets/images/docs/install/wiiu/aroma/actions-highlight.png new file mode 100644 index 0000000..fdac827 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/actions-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/artifact-highlight.png b/public/assets/images/docs/install/wiiu/aroma/artifact-highlight.png new file mode 100644 index 0000000..31c4093 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/artifact-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/releases-highlight.png b/public/assets/images/docs/install/wiiu/aroma/releases-highlight.png new file mode 100644 index 0000000..47428ca Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/releases-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/sd-card.png b/public/assets/images/docs/install/wiiu/aroma/sd-card.png new file mode 100644 index 0000000..eadbfab Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/sd-card.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/workflow-highlight.png b/public/assets/images/docs/install/wiiu/aroma/workflow-highlight.png new file mode 100644 index 0000000..24f7edd Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/workflow-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/wps-highlight.png b/public/assets/images/docs/install/wiiu/aroma/wps-highlight.png new file mode 100644 index 0000000..3ce0f11 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/wps-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/tiramisu/actions-highlight.png b/public/assets/images/docs/install/wiiu/tiramisu/actions-highlight.png new file mode 100644 index 0000000..49f0cdf Binary files /dev/null and b/public/assets/images/docs/install/wiiu/tiramisu/actions-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/tiramisu/artifact-highlight.png b/public/assets/images/docs/install/wiiu/tiramisu/artifact-highlight.png new file mode 100644 index 0000000..989bbc5 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/tiramisu/artifact-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/tiramisu/releases-highlight.png b/public/assets/images/docs/install/wiiu/tiramisu/releases-highlight.png new file mode 100644 index 0000000..555038e Binary files /dev/null and b/public/assets/images/docs/install/wiiu/tiramisu/releases-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/tiramisu/rpx-highlight.png b/public/assets/images/docs/install/wiiu/tiramisu/rpx-highlight.png new file mode 100644 index 0000000..02bc2a7 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/tiramisu/rpx-highlight.png differ diff --git a/public/assets/images/docs/install/wiiu/tiramisu/sd-card.png b/public/assets/images/docs/install/wiiu/tiramisu/sd-card.png new file mode 100644 index 0000000..18684df Binary files /dev/null and b/public/assets/images/docs/install/wiiu/tiramisu/sd-card.png differ diff --git a/public/assets/images/docs/install/wiiu/tiramisu/workflow-highlight.png b/public/assets/images/docs/install/wiiu/tiramisu/workflow-highlight.png new file mode 100644 index 0000000..ff587a7 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/tiramisu/workflow-highlight.png differ diff --git a/public/assets/images/down-arrow.svg b/public/assets/images/down-arrow.svg index 619f62a..ed60370 100644 --- a/public/assets/images/down-arrow.svg +++ b/public/assets/images/down-arrow.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/public/assets/images/edit.svg b/public/assets/images/edit.svg new file mode 100644 index 0000000..d19401d --- /dev/null +++ b/public/assets/images/edit.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/miieditor.svg b/public/assets/images/miieditor.svg new file mode 100644 index 0000000..0ce9d34 --- /dev/null +++ b/public/assets/images/miieditor.svg @@ -0,0 +1,10186 @@ + + + + + + Pretendo Network - Mii Maker Elements + + + + + + + NinStar (design), ashmonty (layout) + + + 2022 + Pretendo Network - Mii Maker Elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/share.svg b/public/assets/images/share.svg new file mode 100644 index 0000000..23fa1fb --- /dev/null +++ b/public/assets/images/share.svg @@ -0,0 +1 @@ + diff --git a/public/assets/images/star.svg b/public/assets/images/star.svg new file mode 100644 index 0000000..d035a75 --- /dev/null +++ b/public/assets/images/star.svg @@ -0,0 +1 @@ + diff --git a/public/assets/js/MiiClass.js b/public/assets/js/MiiClass.js deleted file mode 100644 index f6c76c8..0000000 --- a/public/assets/js/MiiClass.js +++ /dev/null @@ -1,214 +0,0 @@ -// Fetched from https://github.com/PretendoNetwork/account/blob/master/src/mii.js on 2021-12-16 - -const KaitaiStream = require('kaitai-struct/KaitaiStream'); - -class Mii extends KaitaiStream { - constructor(arrayBuffer, byteOffset) { - super(arrayBuffer, byteOffset); - - this.decode(); - } - - decode() { - // Decode raw data - // A lot of this goes unused - this.unknown1 = this.readU1(); - this.characterSet = this.readBitsIntBe(2); - this.regionLock = this.readBitsIntBe(2); - this.profanityFlag = this.readBitsIntBe(1) !== 0; - this.copying = this.readBitsIntBe(1) !== 0; - this.unknown2 = this.readBitsIntBe(2); - this.slotIndex = this.readBitsIntBe(4); - this.pageIndex = this.readBitsIntBe(4); - this.version = this.readBitsIntBe(4); - this.unknown3 = this.readBitsIntBe(4); - this.systemId = Array(8).fill().map(() => this.readU1()); - this.avatarId = Array(4).fill().map(() => this.readU1()); - this.clientId = Array(6).fill().map(() => this.readU1()); - this.padding = this.readU2le(); - this.miiMetaData = this.readU2le(); - this.miiName = Buffer.from(this.readBytes(20)).toString('utf16le'); - this.height = this.readU1(); - this.build = this.readU1(); - this.faceColor = this.readBitsIntBe(3); - this.faceType = this.readBitsIntBe(4); - this.mingle = this.readBitsIntBe(1) !== 0; - this.faceMakeup = this.readBitsIntBe(4); - this.faceWrinkles = this.readBitsIntBe(4); - this.alignToByte(); - this.hairType = this.readU1(); - this.unknown5 = this.readBitsIntBe(4); - this.hairFlip = this.readBitsIntBe(1) !== 0; - this.hairColor = this.readBitsIntBe(3); - this.alignToByte(); - this.eyeData = this.readU4le(); - this.eyebrowData = this.readU4le(); - this.noseData = this.readU2le(); - this.mouthData = this.readU2le(); - this.mouthData2 = this.readU2le(); - this.facialHairData = this.readU2le(); - this.glassesData = this.readU2le(); - this.moleData = this.readU2le(); - this.creatorName = Buffer.from(this.readBytes(20)).toString('utf16le'); - this.padding2 = this.readU2le(); - this.checksum = this.readU2le(); - - // Carve out more specific data from the above values - // TODO: read these bits directly instead of getting them later - - this.gender = (this.miiMetaData & 1); - this.birthMonth = ((this.miiMetaData >> 1) & 15); - this.birthDay = ((this.miiMetaData >> 5) & 31); - this.favoriteColor = ((this.miiMetaData >> 10) & 15); - this.favorite = ((this.miiMetaData >> 14) & 1); - - this.eyeType = (this.eyeData & 63); - this.eyeColor = ((this.eyeData >> 6) & 7); - this.eyeSize = ((this.eyeData >> 9) & 7); - this.eyeStretch = ((this.eyeData >> 13) & 7); - this.eyeRotation = ((this.eyeData >> 16) & 31); - this.eyeHorizontal = ((this.eyeData >> 21) & 15); - this.eyeVertical = ((this.eyeData >> 25) & 31); - - this.eyebrowType = (this.eyebrowData & 31); - this.eyebrowColor = ((this.eyebrowData >> 5) & 7); - this.eyebrowSize = ((this.eyebrowData >> 8) & 15); - this.eyebrowStretch = ((this.eyebrowData >> 12) & 7); - this.eyebrowRotation = ((this.eyebrowData >> 16) & 15); - this.eyebrowHorizontal = ((this.eyebrowData >> 21) & 15); - this.eyebrowVertical = ((this.eyebrowData >> 25) & 31); - - this.noseType = (this.noseData & 31); - this.noseSize = ((this.noseData >> 5) & 15); - this.noseVertical = ((this.noseData >> 9) & 31); - - - this.mouthType = (this.mouthData & 63); - this.mouthColor = ((this.mouthData >> 6) & 7); - this.mouthSize = ((this.mouthData >> 9) & 15); - this.mouthStretch = ((this.mouthData >> 13) & 7); - - this.mouthVertical = (this.mouthData2 & 31); - this.facialHairMustache = ((this.mouthData2 >> 5) & 7); - - this.facialHairType = (this.facialHairData & 7); - this.facialHairColor = ((this.facialHairData >> 3) & 7); - this.facialHairSize = ((this.facialHairData >> 6) & 15); - this.facialHairVertical = ((this.facialHairData >> 10) & 31); - - this.glassesType = (this.glassesData & 15); - this.glassesColor = (this.glassesData >> 4) & 7; - this.glassesSize = (this.glassesData >> 7) & 15; - this.glassesVertical = (this.glassesData >> 11) & 15; - - this.moleEnable = (this.moleData >> 15); - this.moleSize = ((this.moleData >> 1) & 15); - this.moleHorizontal = ((this.moleData >> 5) & 31); - this.moleVertical = ((this.moleData >> 10) & 31); - } - - toStudioMii() { - /* - Can also disable randomization with: - let miiStudioData = Buffer.alloc(0x2F); - let next = 256; - and removing "randomizer" and the "miiStudioData.writeUInt8(randomizer);" call - */ - const miiStudioData = Buffer.alloc(0x2F); - const randomizer = Math.floor(256 * Math.random()); - let next = randomizer; - let pos = 1; - - function encodeMiiPart(partValue) { - const encoded = (7 + (partValue ^ next)) % 256; - next = encoded; - - miiStudioData.writeUInt8(encoded, pos); - pos++; - } - - miiStudioData.writeUInt8(randomizer); - - if (this.facialHairColor === 0) { - encodeMiiPart(8); - } else { - encodeMiiPart(this.facialHairColor); - } - - encodeMiiPart(this.facialHairType); - encodeMiiPart(this.build); - encodeMiiPart(this.eyeStretch); - encodeMiiPart(this.eyeColor + 8); - encodeMiiPart(this.eyeRotation); - encodeMiiPart(this.eyeSize); - encodeMiiPart(this.eyeType); - encodeMiiPart(this.eyeHorizontal); - encodeMiiPart(this.eyeVertical); - encodeMiiPart(this.eyebrowStretch); - - if (this.eyebrowColor === 0) { - encodeMiiPart(8); - } else { - encodeMiiPart(this.eyebrowColor); - } - - encodeMiiPart(this.eyebrowRotation); - encodeMiiPart(this.eyebrowSize); - encodeMiiPart(this.eyebrowType); - encodeMiiPart(this.eyebrowHorizontal); - encodeMiiPart(this.eyebrowVertical); - encodeMiiPart(this.faceColor); - encodeMiiPart(this.faceMakeup); - encodeMiiPart(this.faceType); - encodeMiiPart(this.faceWrinkles); - encodeMiiPart(this.favoriteColor); - encodeMiiPart(this.gender); - - if (this.glassesColor == 0) { - encodeMiiPart(8); - } else if (this.glassesColor < 6) { - encodeMiiPart(this.glassesColor + 13); - } else { - encodeMiiPart(0); - } - - encodeMiiPart(this.glassesSize); - encodeMiiPart(this.glassesType); - encodeMiiPart(this.glassesVertical); - - if (this.hairColor == 0) { - encodeMiiPart(8); - } else { - encodeMiiPart(this.hairColor); - } - - encodeMiiPart(this.hairFlip ? 1 : 0); - encodeMiiPart(this.hairType); - encodeMiiPart(this.height); - encodeMiiPart(this.moleSize); - encodeMiiPart(this.moleEnable); - encodeMiiPart(this.moleHorizontal); - encodeMiiPart(this.moleVertical); - encodeMiiPart(this.mouthStretch); - - if (this.mouthColor < 4) { - encodeMiiPart(this.mouthColor + 19); - } else { - encodeMiiPart(0); - } - - encodeMiiPart(this.mouthSize); - encodeMiiPart(this.mouthType); - encodeMiiPart(this.mouthVertical); - encodeMiiPart(this.facialHairSize); - encodeMiiPart(this.facialHairMustache); - encodeMiiPart(this.facialHairVertical); - encodeMiiPart(this.noseSize); - encodeMiiPart(this.noseType); - encodeMiiPart(this.noseVertical); - - return miiStudioData; - } -} - -module.exports = Mii; \ No newline at end of file diff --git a/public/assets/js/account.js b/public/assets/js/account.js index 2e6da46..e5afb9f 100644 --- a/public/assets/js/account.js +++ b/public/assets/js/account.js @@ -1,22 +1,53 @@ +const onlineFilesModal = document.querySelector('.modal-wrapper#onlinefiles'); +const onlineFilesModalButtonConfirm = document.getElementById('onlineFilesConfirmButton'); +const onlineFilesModalButtonClose = document.getElementById('onlineFilesCloseButton'); +const onlineFilesModalPasswordInput = document.getElementById('password'); -document.getElementById('remove-discord-connection')?.addEventListener('click', () => { - // TODO: Refresh access token if expired (move this to the backend maybe?) +const editSettingsModal = document.querySelector('.modal-wrapper#edit-settings'); +const editSettingsModalButtonClose = document.getElementById('editSettingsCloseButton'); - const tokenType = document.cookie.split('; ').find(row => row.startsWith('token_type=')).split('=')[1]; - const accessToken = document.cookie.split('; ').find(row => row.startsWith('access_token=')).split('=')[1]; +document.getElementById('download-cemu-files')?.addEventListener('click', event => { + event.preventDefault(); - fetch('https://api.pretendo.cc/v1/connections/remove/discord', { - method: 'DELETE', + onlineFilesModal.classList.remove('hidden'); +}); + +onlineFilesModalButtonConfirm?.addEventListener('click', () => { + fetch('/account/online-files', { + method: 'POST', headers: { - 'Content-Type': 'application/json', - 'Authorization': `${tokenType} ${decodeURIComponent(accessToken)}` - } + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + password: onlineFilesModalPasswordInput.value + }) }) - .then(response => response.json()) - .then(({ status }) => { - if (status === 200) { - location.reload(); - } + .then(response => response.blob()) + .then(blob => URL.createObjectURL(blob)) + .then(blobUrl => { + const a = document.createElement('a'); + a.href = blobUrl; + a.setAttribute('download', 'Cemu Pretendo Online Files.zip'); + a.click(); + + onlineFilesModal.classList.add('hidden'); }) .catch(console.log); -}); \ No newline at end of file +}); + +onlineFilesModalButtonClose?.addEventListener('click', () => { + onlineFilesModal.classList.add('hidden'); +}); + +editSettingsModalButtonClose?.addEventListener('click', () => { + editSettingsModal.classList.add('hidden'); +}); + +document.addEventListener('click', event => { + if (event.target.classList.contains('edit')) { + event.preventDefault(); + + editSettingsModal.classList.remove('hidden'); + } +}); diff --git a/public/assets/js/docssidebarhandler.js b/public/assets/js/docssidebarhandler.js new file mode 100644 index 0000000..b602fc4 --- /dev/null +++ b/public/assets/js/docssidebarhandler.js @@ -0,0 +1,7 @@ +const openSidebarBtn = document.querySelector('#openSidebar'); +const content = document.querySelector('div.content'); +openSidebarBtn.addEventListener('click', function() { + const sidebar = document.querySelector('.sidebar'); + sidebar.classList.toggle('open'); + content.classList.toggle('open-sidebar'); +}); diff --git a/public/assets/js/header-handler.js b/public/assets/js/header-handler.js new file mode 100644 index 0000000..4acbbfc --- /dev/null +++ b/public/assets/js/header-handler.js @@ -0,0 +1,85 @@ +/* eslint-disable no-undef, no-unused-vars */ + +// Account widget handler +const userWidgetToggle = document.querySelector('.user-widget-toggle') ; +const userWidget = document.querySelector('.user-widget'); + +// Open widget on click, close locale dropdown +userWidgetToggle?.addEventListener('click', () => { + userWidget.classList.toggle('active'); + localeOptionsContainer.classList.toggle('active'); + localeDropdownToggle.classList.toggle('active'); +}); + +// Locale dropdown handler +function localeDropdownHandler(selectedLocale) { + document.cookie = `preferredLocale=${selectedLocale};max-age=31536000`; + window.location.reload(); +} + +const localeDropdown = document.querySelector( + '.locale-dropdown[data-dropdown]' +); +const localeDropdownOptions = document.querySelectorAll( + '.locale-dropdown[data-dropdown] .options-container' +); +const localeDropdownToggle = document.querySelector('.locale-dropdown-toggle'); + +const localeOptionsContainer = localeDropdown.querySelector('.options-container'); +const localeOptionsList = localeDropdown.querySelectorAll('.option'); + +// click dropdown element will open dropdown +localeDropdownToggle.addEventListener('click', () => { + localeOptionsContainer.classList.toggle('active'); + localeDropdownToggle.classList.toggle('active'); +}); + +// clicking on any option will close dropdown and change value +localeOptionsList.forEach((option) => { + option.addEventListener('click', () => { + localeDropdownToggle.classList.remove('active'); + localeOptionsContainer.classList.remove('active'); + const selectedLocale = option.querySelector('label').getAttribute('for'); + localeDropdownHandler(selectedLocale); + }); +}); + +// close all dropdowns on scroll +document.addEventListener('scroll', () => { + localeDropdownOptions.forEach((el) => el.classList.remove('active')); + localeDropdownToggle.classList.remove('active'); + + userWidget?.classList.remove('active'); +}); + +// click outside of dropdown will close all dropdowns +document.addEventListener('click', (e) => { + const targetElement = e.target; + + let found = false; + if ( + localeDropdown == targetElement || + localeDropdown?.contains(targetElement) + ) { + found = true; + userWidget?.classList.remove('active'); + } + + if ( + userWidget == targetElement || + userWidget?.contains(targetElement) || + userWidgetToggle == targetElement || + userWidgetToggle?.contains(targetElement) + ) { + found = true; + localeDropdownToggle.classList.remove('active'); + localeOptionsContainer.classList.remove('active'); + } + + if (found) return; + + // click outside of dropdowns + userWidget?.classList.remove('active'); + localeDropdownToggle.classList.remove('active'); + localeOptionsContainer.classList.remove('active'); +}); diff --git a/public/assets/js/locale-dropdown-handler.js b/public/assets/js/locale-dropdown-handler.js deleted file mode 100644 index bebec0a..0000000 --- a/public/assets/js/locale-dropdown-handler.js +++ /dev/null @@ -1,64 +0,0 @@ -/* eslint-disable no-undef, no-unused-vars */ -function setDefaultDropdownLocale(localeString) { - try { - const selected = document.querySelector('.selected-locale'); - let item = document.querySelector(`label[for=${localeString}`); - if (!item) { // if locale can't be found, default to en-US - localeString = 'en-US'; - item = document.querySelector(`label[for=${localeString}`); - } - selected.innerHTML = item.innerHTML; - } catch (e) {} // If it errors it's probably because there isn't a navbar in the view -} - -function localeDropdownHandler(selectedLocale) { - document.cookie = `preferredLocale=${selectedLocale};max-age=31536000`; - window.location.reload(); -} - -const dropdowns = document.querySelectorAll('*[data-dropdown]'); -const dropdownOptions = document.querySelectorAll( - '*[data-dropdown] .options-container' -); - -dropdowns.forEach((el) => { - const selected = el.querySelector('.selected-locale'); - const optionsContainer = el.querySelector('.options-container'); - const optionsList = el.querySelectorAll('.option'); - - // click dropdown element will open dropdown - selected.addEventListener('click', () => { - optionsContainer.classList.toggle('active'); - }); - - // clicking on any option will close dropdown and change value - optionsList.forEach((option) => { - option.addEventListener('click', () => { - selected.innerHTML = option.querySelector('label').innerHTML; - optionsContainer.classList.remove('active'); - const selectedLocale = option.querySelector('label').getAttribute('for'); - localeDropdownHandler(selectedLocale); - }); - }); -}); - -// close all dropdowns on scroll -document.addEventListener('scroll', () => { - dropdownOptions.forEach((el) => el.classList.remove('active')); -}); - -// click outside of dropdown will close all dropdowns -document.addEventListener('click', (e) => { - const targetElement = e.target; - - // check if target is from a dropdown - let found = false; - dropdowns.forEach((v) => { - if (v == targetElement || v.contains(targetElement)) found = true; - }); - - if (found) return; - - // click outside of dropdowns - dropdownOptions.forEach((el) => el.classList.remove('active')); -}); diff --git a/public/assets/js/miieditor.js b/public/assets/js/miieditor.js index bb51862..58e7f8e 100644 --- a/public/assets/js/miieditor.js +++ b/public/assets/js/miieditor.js @@ -1,66 +1,238 @@ -// This file gets automatically bundled with browserify when running the start script. This also means that after any update you're gonna need to restart the server. +// This file gets automatically bundled with browserify when running the start script. This also means that after any update you're gonna need to restart the server to see any changes. -// Prevent the user from reloading or leaving the page -window.addEventListener('beforeunload', function (e) { - e.preventDefault(); +// Prevent the user from reloading or leaving the page +window.onbeforeunload = function (e) { + e?.preventDefault(); e.returnValue = ''; +}; + +// this makes it so the canvas fits in the target element +function setCanvasScale() { + let targetX; + let targetY; + + if (window.innerWidth <= 1080) { + const canvasWrapper = document.querySelector('.canvas-wrapper'); + + targetX = canvasWrapper.offsetWidth; + targetY = canvasWrapper.offsetHeight; + } else { + targetX = window.innerWidth * 0.9; + targetY = window.innerHeight * 0.9; + } + + const canvas = document.querySelector('canvas#miiCanvas'); + const XScale = targetX / canvas.width; + const YScale = targetY / canvas.height; + canvas.style.transform = `scale(${Math.min(XScale, YScale)})`; +} + +setCanvasScale(); +window.addEventListener('resize', () => { + setCanvasScale(); }); - -const Mii = require('./MiiClass.js'); - // MII RENDERER +const Mii = require('mii-js'); + // The Mii data is stored in a script tag in the HTML, so we can just grab it and then remove the element const encodedUserMiiData = document.querySelector( 'script#encodedUserMiiData' ).textContent; document.querySelector('script#encodedUserMiiData').remove(); +console.log('encodedMiiData', encodedUserMiiData); -// We initialize the Mii object with the encoded data and render the Mii +// We initialize the Mii object const mii = new Mii(Buffer.from(encodedUserMiiData, 'base64')); + +// We set the img sources for the unedited miis in the save animation +const miiStudioNeutralUrl = mii.studioUrl({ + width: 512, + bgColor: '13173300', +}); +const miiStudioSorrowUrl = mii.studioUrl({ + width: 512, + bgColor: '13173300', + expression: 'sorrow', +}); +document.querySelector('.mii-comparison img.old-mii').src = miiStudioNeutralUrl; +document.querySelector('.mii-comparison.confirmed img.old-mii').src = + miiStudioSorrowUrl; + +// we keeep the images here so we can cache them when we need to change the build/height +const miiFaceImg = new Image(); +const baldMiiFaceImg = new Image(); +const miiBodyImg = new Image(); + +// Initial mii render renderMii(); +// This function renders the Mii on the canvas +function renderMii(heightOverride, buildOverride) { + const canvas = document.querySelector('canvas#miiCanvas'); + const ctx = canvas.getContext('2d'); + const height = heightOverride || mii.height; + const build = buildOverride || mii.build; -// This function renders the Mii on the page -function renderMii(type) { - type = type || 'all_body'; // Can be 'all_body' or 'face' + // if there isn't an override or the images haven't been cached, we load the images + if ((!heightOverride && !buildOverride) || !miiFaceImg.src || !baldMiiFaceImg.src || !miiBodyImg.src) { + canvas.style.filter = 'blur(4px) brightness(70%)'; - const newMii = mii.toStudioMii().toString('hex'); - document.querySelector( - 'img#mii-img' - ).src = `https://studio.mii.nintendo.com/miis/image.png?data=${newMii}&type=${type}&expression=normal&width=512&bgColor=CAB1FB00`; + // we create a copy of the mii and make it bald + const baldMii = Object.create( + Object.getPrototypeOf(mii), + Object.getOwnPropertyDescriptors(mii) + ); + baldMii.hairType = 30; + baldMiiFaceImg.src = baldMii.studioUrl({ + width: 512, + bgColor: '13173300', + type: 'face_only', + }); + miiFaceImg.src = mii.studioUrl({ + width: 512, + bgColor: '13173300', + type: 'face_only', + }); + miiBodyImg.src = mii.studioAssetUrlBody(); + } - // This updates the offset of the shadow of the Mii - document.querySelector('div.mii-img-wrapper .shadow').style.bottom = `${ - mii.height * mii.height * 0.0035 - mii.height * 0.162 - 18 - }px`; + // misc calculations + const bodyWidth = (build * 1.7 + 220) * (0.003 * height + 0.6); + const bodyHeight = height * 3.5 + 227; + const bodyXPos = (canvas.width - bodyWidth) / 2; + const bodyYPos = canvas.height - bodyHeight; + const headYPos = bodyYPos - 408; + + // we make sure every image is loaded before rendering + if (miiFaceImg.complete) { + onMiiFaceImgLoad(); + } else { + miiFaceImg.onload = () => { + onMiiFaceImgLoad(); + }; + } + function onMiiFaceImgLoad() { + if (miiBodyImg.complete) { + onBodyImgLoad(); + } else { + miiBodyImg.onload = () => { + onBodyImgLoad(); + }; + } + } + function onBodyImgLoad() { + if (baldMiiFaceImg.complete) { + onBaldMiiFaceImgLoad(); + } else { + baldMiiFaceImg.onload = () => { + onBaldMiiFaceImgLoad(); + }; + } + } + function onBaldMiiFaceImgLoad() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.drawImage(miiFaceImg, 0, headYPos); + ctx.drawImage(miiBodyImg, bodyXPos, bodyYPos, bodyWidth, bodyHeight); + + // we draw a portion of the bald mii on top of the normal mii to hide the mii's neck (see https://i.imgur.com/U0fpkwi.png) + ctx.drawImage(baldMiiFaceImg, 186, 384, 140, 120, 186, headYPos + 384, 140, 120); + canvas.style.filter = ''; + } + + if (!heightOverride && !buildOverride) { + const faceMiiStudioUrl = mii.studioUrl({ + width: 512, + bgColor: '13173300', + }); + + const faceMiiStudioSmileUrl = mii.studioUrl({ + width: 512, + bgColor: '13173300', + expression: 'smile' + }); + + // sets the new mii in the save tab to the new mii + document.querySelector('.mii-comparison img.new-mii').src = faceMiiStudioUrl; + document.querySelector('.mii-comparison.confirmed img.new-mii').src = faceMiiStudioSmileUrl; + } } // This function updates a prop of the Mii and rerenders it -function updateMii(e, type) { +function updateMii(e) { const prop = e.target.name; - const value = e.target.value; - mii[prop] = parseInt(value); - console.log(mii); - renderMii(type); + let value = e.target.value || e.target.defaultValue; + + // if the value comes from a checkbox, we use the checked property + if (value === 'on' || value === 'off') { + value = e.target.checked; + } + + // if the prop is disableSharing, we set the value to the opposite of the current value + if (prop === 'disableSharing') { + value = !value; + } + + // Handle booleans, on/offs and strings + if (value === 'true' || value === 'false') { + mii[prop] = value === 'true'; + } else if (value === 'on' || value === 'off') { + mii[prop] = value === 'on'; + } else if (isNaN(parseInt(value))) { + mii[prop] = value; + } else { + mii[prop] = parseInt(value); + } + + // if the user is editing the height or the build, we render the mii with the correct override, else we do a straight render + if (prop === 'height') { + renderMii(value, false); + } else if (prop === 'build') { + renderMii(false, value); + } else { + renderMii(); + console.log(mii); + } +} + +function handleCalendar(e) { + const valueArray = e.target.value.split('-'); + const day = valueArray[2]; + const month = valueArray[1]; + + mii.birthDay = parseInt(day); + mii.birthMonth = parseInt(month); +} + +function preventEmpty(e) { + if (e.target.value !== '') return; + + e.target.value = e.target.defaultValue; } document.querySelectorAll('fieldset').forEach((fieldset) => { - fieldset.addEventListener('change', (e) => updateMii(e)); + fieldset.addEventListener('change', updateMii); }); - -document.querySelectorAll('input[type=\'range\']').forEach((fieldset) => { - fieldset.addEventListener('input', (e) => updateMii(e)); +document.querySelectorAll('input[type=\'range\']').forEach((input) => { + input.addEventListener('input', updateMii); }); +document + .querySelectorAll('input[type=\'text\'], input[type=\'number\']') + .forEach((input) => { + input.addEventListener('blur', preventEmpty); + }); +document + .querySelector('input[type=\'date\']#birthDate') + .addEventListener('change', handleCalendar); // FORM // Here we preselect the options corresponding to the Mii's current values [ 'faceType', - 'faceColor', - 'faceMakeup', - 'faceWrinkles', + 'skinColor', + 'makeupType', + 'wrinklesType', 'hairType', 'hairColor', 'eyebrowType', @@ -72,42 +244,70 @@ document.querySelectorAll('input[type=\'range\']').forEach((fieldset) => { 'mouthColor', 'glassesType', 'glassesColor', - 'facialHairType', + 'beardType', 'facialHairColor', - 'facialHairMustache', - 'moleEnable', + 'mustacheType', + 'moleEnabled', 'gender', - 'favoriteColor' + 'favoriteColor', ].forEach((prop) => { - document.querySelector(`#${prop}${mii[prop]}`).checked = true; + const el = document.querySelector(`#${prop}${mii[prop]}`); + if (el) { + el.checked = true; + } + console.log(`[info] preselected value for ${prop}`); }); +['favorite', 'allowCopying'].forEach((prop) => { + const el = document.querySelector(`#${prop}`); + if (el) { + el.checked = mii[prop]; + } + console.log(`[info] preselected value for ${prop}`); +}); + +document.querySelector('#disableSharing').checked = !mii.disableSharing; +console.log('[info] preselected value for disableSharing'); + [ - 'eyebrowVertical', - 'eyebrowHorizontal', + 'eyebrowYPosition', + 'eyebrowSpacing', 'eyebrowRotation', - 'eyebrowSize', - 'eyebrowStretch', - 'eyeVertical', - 'eyeHorizontal', + 'eyebrowScale', + 'eyebrowVerticalStretch', + 'eyeYPosition', + 'eyeSpacing', 'eyeRotation', - 'eyeSize', - 'eyeStretch', - 'noseVertical', - 'noseSize', - 'glassesVertical', - 'glassesSize', - 'facialHairVertical', - 'facialHairSize', - 'moleVertical', - 'moleHorizontal', - 'moleSize', + 'eyeScale', + 'eyeVerticalStretch', + 'noseYPosition', + 'noseScale', + 'mouthYPosition', + 'mouthScale', + 'mouthHorizontalStretch', + 'glassesYPosition', + 'glassesScale', + 'mustacheYPosition', + 'mustacheScale', + 'moleYPosition', + 'moleXPosition', + 'moleScale', 'height', - 'build' + 'build', + 'miiName', + 'creatorName', ].forEach((prop) => { document.querySelector(`#${prop}`).value = mii[prop]; + document.querySelector(`#${prop}`).defaultValue = mii[prop]; + console.log(`[info] preselected value for ${prop}`); }); +const paddedBirthDay = mii.birthDay.toString().padStart(2, '0'); +const paddedBirthMonth = mii.birthMonth.toString().padStart(2, '0'); +document.querySelector( + 'input[type=\'date\']#birthDate' +).value = `2024-${paddedBirthMonth}-${paddedBirthDay}`; +console.log('[info] preselected value for birthMonth && birthDay'); // TABS, SUBTABS, AND ALL THE INHERENT JANK @@ -115,19 +315,22 @@ function openTab(e, tabType) { e.preventDefault(); // Deselect all subpages - document.querySelectorAll('.subtab.has-subpages .subpage.active').forEach((el) => { - el.classList?.remove('active'); - }); + document + .querySelectorAll('.subtab.has-subpages .subpage.active') + .forEach((el) => { + el.classList?.remove('active'); + }); document.querySelectorAll('.subtab.active').forEach((el) => { el.classList?.remove('active'); }); - const buttonReplacement = tabType.charAt(0).toUpperCase() + tabType.slice(1); + const buttonReplacement = + tabType.charAt(0).toUpperCase() + tabType.slice(1); - document.querySelectorAll(`.${tabType}.active`).forEach(el => { + document.querySelectorAll(`.${tabType}.active`).forEach((el) => { el?.classList?.remove('active'); }); - document.querySelectorAll(`.${tabType}btn.active`).forEach(el => { + document.querySelectorAll(`.${tabType}btn.active`).forEach((el) => { el?.classList?.remove('active'); }); @@ -143,15 +346,15 @@ function openTab(e, tabType) { document.querySelector(`#${selectedID} .subtabbtn`)?.click(); } + setCanvasScale(); + // We hide all subpages document.querySelectorAll('.subpage').forEach((el) => { el.classList.remove('active'); }); // Selects the first subpage if there is one - document - .querySelector(`#${selectedID} .subpage`) - ?.classList?.add('active'); + document.querySelector(`#${selectedID} .subpage`)?.classList?.add('active'); } // Here we bind all of the functions to the corresponding buttons @@ -200,3 +403,72 @@ document.querySelectorAll('span.current-page-index').forEach((el) => { document.querySelectorAll('button.page-btn').forEach((el) => { el.addEventListener('click', paginationHandler); }); + +// mii saving business (animation jank & actual saving) +document + .querySelector('#saveTab #saveButton') + .addEventListener('click', (e) => { + e.preventDefault(); + + document + .querySelector('#saveTab #saveButton') + .classList.add('inactive', 'fade-out'); + document.querySelector('.tabs').style.pointerEvents = 'none'; + document.querySelector('.mii-comparison.confirmed').style.opacity = 1; + document + .querySelector('#saveTab p.save-prompt') + .classList.add('fade-out'); + + setTimeout(() => { + document.querySelector( + '.mii-comparison.unconfirmed' + ).style.opacity = 0; + }, 500); + + setTimeout(() => { + document + .querySelector('.mii-comparison.confirmed .old-mii') + .classList.add('fade-out'); + document + .querySelector('.mii-comparison.confirmed svg') + .classList.add('fade-out'); + }, 1500); + + setTimeout(() => { + document + .querySelector('.mii-comparison.confirmed .new-mii-wrapper') + .classList.add('centered-mii-img'); + }, 2000); + + try { + const miiData = mii.encode().toString('base64'); + const tokenType = document.cookie.split('; ').find(row => row.startsWith('token_type=')).split('=')[1]; + const accessToken = document.cookie.split('; ').find(row => row.startsWith('access_token=')).split('=')[1]; + + fetch('http://api.pretendo.cc/v1/user', { + method: 'POST', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': `${tokenType} ${decodeURIComponent(accessToken)}` + }, + body: JSON.stringify({ + mii: { + name: mii.miiName, + primary: 'Y', + data: miiData, + } + }) + }) + .then(({ status }) => { + if (status === 200) { + window.onbeforeunload = null; + window.location.assign('/account'); + } + }) + .catch(console.log); + // CHECK IF MII IS VALID SERVERSIDE + } catch (error) { + alert(error); + } + }); diff --git a/public/assets/js/progress-charts.js b/public/assets/js/progress-charts.js index 875507e..6313d34 100644 --- a/public/assets/js/progress-charts.js +++ b/public/assets/js/progress-charts.js @@ -8,12 +8,16 @@ document.querySelectorAll('.feature-list-wrapper').forEach(progressListElement = const allStartedFeatureNodes = progressListElement.querySelectorAll('.feature .ongoing'); // Use percentage override data attribute if present, else calculate - const progressPercentage = Math.round(percentageOverride) || Math.round(Math.min((allDoneFeatureNodes.length + allStartedFeatureNodes.length * 0.5) / allFeatureNodes.length * 100, 100)); + const progressPercentage = Math.round(percentageOverride) || Math.round(Math.min((allDoneFeatureNodes.length + allStartedFeatureNodes.length * 0.5) / allFeatureNodes.length * 100, 100)) || 0; const remainingPercentage = 100 - progressPercentage; // Set inner paragraph progressListElement.querySelectorAll('.percentage-label').forEach(p => { - p.innerText = progressPercentage.toString().padStart(2, '0') + '%'; + if (progressPercentage === 0) { + p.innerText = progressPercentage.toString() + '%'; + } else { + p.innerText = progressPercentage.toString().padStart(2, '0') + '%'; + } }); // Create chart @@ -34,7 +38,7 @@ document.querySelectorAll('.feature-list-wrapper').forEach(progressListElement = datasets: [ { data, - backgroundColor: isInBrightCard ? ['white', 'rgba(195, 178, 227, 0.5)'] : ['#9D6FF3', '#4C5174'] + backgroundColor: isInBrightCard ? ['white', 'rgba(195, 178, 227, 0.5)'] : ['#9D6FF3', '#31365A'] } ] }, diff --git a/public/assets/js/upgrade.js b/public/assets/js/upgrade.js new file mode 100644 index 0000000..104acbb --- /dev/null +++ b/public/assets/js/upgrade.js @@ -0,0 +1,114 @@ +const buttons = { + submit: document.getElementById('submitButton'), + unsubModal: { + show: document.getElementById('unsubModalShowButton'), + close: document.getElementById('unsubModalCloseButton'), + confirm: document.getElementById('unsubModalConfirmButton'), + }, + switchTierModal: { + show: document.getElementById('switchTierShowButton'), + close: document.getElementById('switchTierCloseButton'), + confirm: document.getElementById('switchTierConfirmButton'), + }, +}; + +const currentTierID = document.querySelector('form').dataset.currentTier || undefined; + +const currentTierElement = document.querySelector(`#${currentTierID}`) || undefined; + +// if the condition is met, we disable the submit button and enable the unsubscribe button +function conditionalSubmitButton(condition, target) { + if (condition) { + buttons.submit.innerText = 'Already subscribed to this tier'; + buttons.unsubModal.show.innerText = `Unsubscribe from ${currentTierElement.dataset.tierName}`; + buttons.submit.disabled = true; + buttons.submit.classList.add('disabled'); + buttons.unsubModal.show.classList.remove('hidden'); + } else { + buttons.submit.classList.remove('disabled'); + buttons.unsubModal.show.classList.add('hidden'); + buttons.submit.disabled = false; + buttons.submit.innerText = `Subscribe to ${target.dataset.tierName}`; + } +} + +function submitForm(cancel) { + const form = document.querySelector('form'); + + if (cancel) { + form.action = '/account/stripe/unsubscribe'; + } else { + const selectedTier = form.querySelector('input[type="radio"]:checked').value; + form.action = `/account/stripe/checkout/${selectedTier}`; + } + + form.submit(); +} + +// If the currect tier exists, select it from the list and disable the submit button. +if (currentTierElement) { + currentTierElement.click(); + conditionalSubmitButton(true); +} + +// If a tier is selected, conditionally enable the submit button. +document.querySelector('form').addEventListener('change', function(e) { + e.preventDefault(); + + // If the selected tier is the current tier, set the button to disabled. Else we enable the button + conditionalSubmitButton(e.target.value === currentTierElement?.value, e.target); +}); + +// handle the submit button +buttons.submit.addEventListener('click', function(e) { + e.preventDefault(); + + // If the user is already subscribed to another tier, we show the confirm modal, else if this is a new subscription we submit the form. + if (currentTierElement) { + const oldTierNameSpan = document.querySelector('#switchtier .modal-caption span.oldtier'); + const newTierNameSpan = document.querySelector('#switchtier .modal-caption span.newtier'); + oldTierNameSpan.innerText = currentTierElement.dataset.tierName; + newTierNameSpan.innerText = document.querySelector('input[name="tier"]:checked').dataset.tierName; + + document.body.classList.add('modal-open'); + document.querySelector('.modal-wrapper#switchtier').classList.remove('hidden'); + } else { + submitForm(); + } +}); + +buttons.unsubModal.show.addEventListener('click', function(e) { + e.preventDefault(); + + const tierNameSpan = document.querySelector('#unsub .modal-caption span'); + tierNameSpan.innerText = currentTierElement.dataset.tierName; + + // Show the unsubscribe modal + document.body.classList.add('modal-open'); + document.querySelector('.modal-wrapper#unsub').classList.remove('hidden'); +}); +buttons.unsubModal.close.addEventListener('click', function(e) { + e.preventDefault(); + + // Hide the unsubscribe modal + document.body.classList.remove('modal-open'); + document.querySelector('.modal-wrapper#unsub').classList.add('hidden'); +}); +buttons.unsubModal.confirm.addEventListener('click', function(e) { + e.preventDefault(); + + submitForm(true); +}); + +buttons.switchTierModal.close.addEventListener('click', function(e) { + e.preventDefault(); + + // Hide the switch tier modal + document.body.classList.remove('modal-open'); + document.querySelector('.modal-wrapper#switchtier').classList.add('hidden'); +}); +buttons.switchTierModal.confirm.addEventListener('click', function(e) { + e.preventDefault(); + + submitForm(false); +}); diff --git a/public/assets/site.webmanifest b/public/assets/site.webmanifest index f0c99ec..8da98be 100644 --- a/public/assets/site.webmanifest +++ b/public/assets/site.webmanifest @@ -1,19 +1,19 @@ { - "name": "Pretendo Network", - "short_name": "Pretendo Network", - "icons": [ - { - "src": "https://pretendo.network/assets/images/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "https://pretendo.network/assets/images/icons/android-chrome-384x384.png", - "sizes": "384x384", - "type": "image/png" - } - ], - "theme_color": "#1b1f3b", - "background_color": "#1b1f3b", - "display": "standalone" + "name": "Pretendo Network", + "short_name": "Pretendo Network", + "icons": [ + { + "src": "https://pretendo.network/assets/images/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "https://pretendo.network/assets/images/icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#1b1f3b", + "background_color": "#1b1f3b", + "display": "standalone" } diff --git a/public/site.webmanifest b/public/site.webmanifest index fba5ca1..3c68254 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -1,19 +1,19 @@ { - "name": "Pretendo", - "short_name": "Pretendo", - "icons": [ - { - "src": "/assets/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/assets/icons/android-chrome-384x384.png", - "sizes": "384x384", - "type": "image/png" - } - ], - "theme_color": "#673db6", - "background_color": "#673db6", - "display": "standalone" + "name": "Pretendo", + "short_name": "Pretendo", + "icons": [ + { + "src": "/assets/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/assets/icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#673db6", + "background_color": "#673db6", + "display": "standalone" } diff --git a/src/cache.js b/src/cache.js new file mode 100644 index 0000000..d22f61b --- /dev/null +++ b/src/cache.js @@ -0,0 +1,185 @@ +const { GraphQLClient, gql } = require('graphql-request'); +const Stripe = require('stripe'); +const config = require('../config.json'); + +const graphql = new GraphQLClient('https://api.github.com/graphql', { + headers: { + Authorization: `bearer ${config.github.graphql_token}`, + } +}); +const stripe = new Stripe(config.stripe.secret_key); + +const getProjectCards = gql` + fragment ItemContent on Node { + __typename + ... on DraftIssue { + title + } + ... on Issue { + title + } + } + + fragment Itemfields on Node { + __typename + ... on ProjectV2ItemFieldSingleSelectValue { + name, + field { + ... on ProjectV2SingleSelectField { + name + } + } + } + } + + query getProjectCards($orgName: String!) { + organization(login: $orgName) { + projectsV2(first: 100) { + nodes { + repositories(first: 1) { + nodes { + url + } + } + title + items(first: 100) { + nodes { + id + content { + ...ItemContent + } + fieldValues(first: 20) { + nodes { + ...Itemfields + } + } + } + } + } + } + } + } +`; + +let githubProjectsCache; +let stripeDonationCache; + +async function getGithubProjectsCache() { + if (!githubProjectsCache) { + githubProjectsCache = await updateGithubProjectsCache(); + } + + if (githubProjectsCache.update_time < Date.now() - (1000 * 60 * 60)) { + githubProjectsCache = await updateGithubProjectsCache(); + } + + return githubProjectsCache; +} + +function getProgressField(fields) { + const found = fields.nodes.find(v => v.field?.name === 'Status'); + return found?.name ?? undefined; +} + +async function updateGithubProjectsCache() { + const projectsCacheData = { + update_time: Date.now(), + sections: [] + }; + + const data = await graphql.request(getProjectCards, { + orgName: 'PretendoNetwork', + }); + + const projects = data.organization.projectsV2.nodes; + + for (const project of projects) { + if (!project.repositories.nodes[0]) { + continue; + } + + const extractedData = { + title: project.title, + url: project.repositories.nodes[0]?.url, + cards: { + done: [], + in_progress: [], + todo: [] + } + }; + + for (const { content, fieldValues } of project.items.nodes) { + const progress = getProgressField(fieldValues); + + if (!['DraftIssue'].includes(content.__typename)) { + continue; // not a supported card, skip + } + + if (!progress) { + continue; // entry does not have a status, skip + } + + extractedData.cards[progress.toLowerCase().replace(' ', '_')]?.push(content.title); + } + + projectsCacheData.sections.push(extractedData); + } + + return projectsCacheData; +} + +async function getStripeDonationCache() { + if (!stripeDonationCache) { + stripeDonationCache = await updateStripeDonationCache(); + } + + if (stripeDonationCache.update_time < Date.now() - (1000 * 60 * 60)) { + stripeDonationCache = await updateStripeDonationCache(); + } + + return stripeDonationCache; +} + +async function updateStripeDonationCache() { + const donationCache = { + update_time: Date.now(), + goal: config.stripe.goal_cents, + total: 0, + donators: 0, + completed_real: 0, + completed_capped: 0 + }; + + let hasMore = true; + let lastId; + + while (hasMore) { + const { data: activeSubscriptions, has_more } = await stripe.subscriptions.list({ + limit: 100, + status: 'active', + starting_after: lastId + }); + + donationCache.donators += activeSubscriptions.length; + + for (const subscription of activeSubscriptions) { + donationCache.total += subscription.plan.amount; + lastId = subscription.id; + } + + hasMore = has_more; + } + + donationCache.goal_dollars = donationCache.goal / 100; + donationCache.total_dollars = donationCache.total / 100; + + donationCache.completed_real = Math.floor((donationCache.total / donationCache.goal) * 100); // real completion amount + donationCache.completed_capped = Math.max(0, Math.min(donationCache.completed_real, 100)); // capped at 100 + + return donationCache; +} + +module.exports = { + getGithubProjectsCache, + getStripeDonationCache +}; diff --git a/src/database.js b/src/database.js new file mode 100644 index 0000000..b54a1ed --- /dev/null +++ b/src/database.js @@ -0,0 +1,27 @@ +const mongoose = require('mongoose'); +const PNIDSchema = require('./schema/pnid'); +const config = require('../config.json'); + +const accountServerConfig = config.database.account; +const { uri, database, options } = accountServerConfig; +let accountServerDBConnection; +let PNID; + +async function connect() { + accountServerDBConnection = await mongoose.createConnection(`${uri}/${database}`, options); + accountServerDBConnection.on('error', console.error.bind(console, 'Mongoose connection error:')); + accountServerDBConnection.on('close', () => { + accountServerDBConnection.removeAllListeners(); + }); + + await accountServerDBConnection.asPromise(); + + PNID = accountServerDBConnection.model('PNID', PNIDSchema); + + module.exports.PNID = PNID; +} + +module.exports = { + connect, + PNID +}; diff --git a/src/json/miieditor.json b/src/json/miieditor.json new file mode 100644 index 0000000..5d8cf5a --- /dev/null +++ b/src/json/miieditor.json @@ -0,0 +1,39 @@ +{ + "face": [0, 1, 8, 2, 3, 9, 4, 5, 10, 6, 7, 11], + "hairs": [ + [33, 47, 40, 37, 32, 107, 48, 51, 55, 70, 44, 66], + [52, 50, 38, 49, 43, 31, 56, 68, 62, 115, 76, 119], + [64, 81, 116, 121, 22, 58, 60, 87, 125, 117, 73, 75], + [42, 89, 57, 54, 80, 34, 23, 86, 88, 118, 39, 36], + [45, 67, 59, 65, 41, 30, 12, 16, 10, 82, 128, 129], + [14, 95, 105, 100, 6, 20, 93, 102, 27, 4, 17, 110], + [123, 8, 106, 72, 3, 21, 0, 98, 63, 90, 11, 120], + [5, 74, 108, 94, 124, 25, 99, 69, 35, 13, 122, 113], + [53, 24, 85, 83, 71, 131, 96, 101, 29, 7, 15, 112], + [79, 1, 109, 127, 91, 26, 61, 103, 2, 77, 18, 92], + [84, 9, 19, 130, 97, 104, 46, 78, 28, 114, 126, 111] + ], + "eyebrows": [ + [6, 0, 12, 1, 9, 19, 7, 21, 8, 17, 5, 4], + [11, 10, 2, 3, 14, 20, 15, 13, 22, 18, 16, 23] + ], + "eyes": [ + [2, 4, 0, 8, 39, 17, 1, 26, 16, 15, 27, 20], + [33, 11, 19, 32, 9, 12, 23, 34, 21, 25, 40, 35], + [5, 41, 13, 36, 37, 6, 24, 30, 31, 18, 28, 46], + [7, 44, 38, 42, 45, 29, 3, 43, 22, 10, 14, 47], + [48, 49, 50, 53, 59, 56, 54, 58, 57, 55, 51, 52] + ], + "nose": [ + [1, 10, 2, 3, 6, 0, 5, 4, 8, 9, 7, 11], + [13, 14, 12, 17, 16, 15] + ], + "mouth": [ + [23, 1, 19, 21, 22, 5, 0, 8, 10, 16, 6, 13], + [7, 9, 2, 17, 3, 4, 15, 11, 20, 18, 14, 12], + [27, 30, 24, 25, 29, 28, 26, 35, 31, 34, 33, 32] + ], + "arrayOf6": [0, 1, 2, 3, 4, 5], + "arrayOf9": [0, 1, 2, 3, 4, 5, 6, 7, 8], + "arrayOf12": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] +} diff --git a/src/logger.js b/src/logger.js index 5bbc737..6f27fac 100644 --- a/src/logger.js +++ b/src/logger.js @@ -49,4 +49,4 @@ module.exports = { error, warn, info -}; \ No newline at end of file +}; diff --git a/src/mailer.js b/src/mailer.js new file mode 100644 index 0000000..283dabc --- /dev/null +++ b/src/mailer.js @@ -0,0 +1,22 @@ +const nodemailer = require('nodemailer'); +const config = require('../config.json'); + +const transporter = nodemailer.createTransport({ + host: 'smtp.gmail.com', + port: 587, + secure: false, + auth: { + user: config.gmail.user, + pass: config.gmail.pass + } +}); + +async function sendMail(options) { + options.from = config.gmail.from; + + return await transporter.sendMail(options); +} + +module.exports = { + sendMail +}; diff --git a/src/middleware/redirect.js b/src/middleware/redirect.js new file mode 100644 index 0000000..d1e5d38 --- /dev/null +++ b/src/middleware/redirect.js @@ -0,0 +1,17 @@ +async function redirectMiddleware(request, response, next) { + if (request.path.startsWith('/account/logout')) { + return next(); + } + + if (request.method === 'POST') { + request.redirect = request.body.redirect?.startsWith('/') ? request.body.redirect : null; + } + + if (request.query.redirect) { + response.locals.redirect = request.query.redirect?.startsWith('/') ? request.query.redirect : null; + } + + return next(); +} + +module.exports = redirectMiddleware; diff --git a/src/middleware/render-data.js b/src/middleware/render-data.js new file mode 100644 index 0000000..075120d --- /dev/null +++ b/src/middleware/render-data.js @@ -0,0 +1,47 @@ +const util = require('../util'); +const database = require('../database'); + +async function renderDataMiddleware(request, response, next) { + if (request.path.startsWith('/assets')) { + return next(); + } + + if (request.path.startsWith('/account/logout')) { + return next(); + } + + // Get user local + const reqLocale = request.locale; + const locale = util.getLocale(reqLocale.language, reqLocale.region); + + response.locals.locale = locale; + response.locals.localeString = reqLocale.toString(); + + // Get message cookies + response.locals.success_message = request.cookies.success_message; + response.locals.error_message = request.cookies.error_message; + + // Reset message cookies + response.clearCookie('success_message', { domain: '.pretendo.network' }); + response.clearCookie('error_message', { domain: '.pretendo.network' }); + + response.locals.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token; + + if (response.locals.isLoggedIn) { + try { + response.locals.account = await util.getUserAccountData(request, response); + + request.pnid = await database.PNID.findOne({ pid: response.locals.account.pid }); + request.account = response.locals.account; + + return next(); + } catch (error) { + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + return response.redirect('/account/logout'); + } + } else { + return next(); + } +} + +module.exports = renderDataMiddleware; diff --git a/src/middleware/require-login.js b/src/middleware/require-login.js new file mode 100644 index 0000000..86fcd83 --- /dev/null +++ b/src/middleware/require-login.js @@ -0,0 +1,14 @@ +async function requireLoginMiddleware(request, response, next) { + if (request.path.startsWith('/account/logout')) { + return next(); + } + + // Verify the user is logged in + if (!request.cookies.access_token || !request.cookies.refresh_token) { + return response.redirect(`/account/login?redirect=${request.originalUrl}`); + } + + return next(); +} + +module.exports = requireLoginMiddleware; diff --git a/src/routers/account.js b/src/routers/account.js deleted file mode 100644 index 1e358b3..0000000 --- a/src/routers/account.js +++ /dev/null @@ -1,497 +0,0 @@ -const { Router } = require('express'); -const crypto = require('crypto'); -const DiscordOauth2 = require('discord-oauth2'); -const { v4: uuidv4 } = require('uuid'); -const AdmZip = require('adm-zip'); -const util = require('../util'); -const config = require('../../config.json'); -const router = new Router(); -const aesKey = Buffer.from(config.aes_key, 'hex'); - -// Create OAuth client -const discordOAuth = new DiscordOauth2({ - clientId: config.discord.client_id, - clientSecret: config.discord.client_secret, - redirectUri: `${config.http.base_url}/account/connect/discord`, - version: 'v9' -}); - -router.get('/', async (request, response) => { - // Verify the user is logged in - if (!request.cookies.access_token || !request.cookies.refresh_token || !request.cookies.ph) { - return response.redirect('/account/login'); - } - - // Setup the data to be sent to the handlebars renderer - const renderData = { - layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), - linked: request.cookies.linked, - error: request.cookies.error - }; - - // Reset message cookies - response.clearCookie('linked', { domain: '.pretendo.network' }); - response.clearCookie('error', { domain: '.pretendo.network' }); - - // Attempt to get user data - let apiResponse = await util.apiGetRequest('/v1/user', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` - }); - - if (apiResponse.statusCode !== 200) { - // Assume expired, refresh and retry request - apiResponse = await util.apiPostGetRequest('/v1/login', {}, { - refresh_token: request.cookies.refresh_token, - grant_type: 'refresh_token' - }); - - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - - const tokens = apiResponse.body; - - response.cookie('refresh_token', tokens.refresh_token, { domain : '.pretendo.network' }); - response.cookie('access_token', tokens.access_token, { domain : '.pretendo.network' }); - response.cookie('token_type', tokens.token_type, { domain : '.pretendo.network' }); - - apiResponse = await util.apiGetRequest('/v1/user', { - 'Authorization': `${tokens.token_type} ${tokens.access_token}` - }); - } - - // If still failed, something went horribly wrong - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - - // Set user account info to render data - const account = apiResponse.body; - - renderData.account = account; - renderData.isTester = account.access_level > 0; - - // Check if a Discord account is linked to the PNID - if (account.connections.discord.id && account.connections.discord.id.trim() !== '') { - // If Discord account is linked, then get user info - try { - renderData.discordUser = await discordOAuth.getUser(account.connections.discord.access_token); - } catch (error) { - // Assume expired, refresh and retry Discord request - let tokens; - try { - tokens = await discordOAuth.tokenRequest({ - scope: 'identify guilds', - grantType: 'refresh_token', - refreshToken: account.connections.discord.refresh_token, - }); - } catch (error) { - renderData.error = 'Invalid Discord refresh token. Remove account and relink'; - response.render('account/account', renderData); - } - - // TODO: Add a dedicated endpoint for updating connections? - apiResponse = await util.apiPostGetRequest('/v1/connections/add/discord', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` - }, { - data: { - id: account.connections.discord.id, - access_token: tokens.access_token, - refresh_token: tokens.refresh_token, - } - }); - - if (apiResponse.statusCode !== 200) { - // Assume expired, refresh and retry request - apiResponse = await util.apiPostGetRequest('/v1/login', {}, { - refresh_token: request.cookies.refresh_token, - grant_type: 'refresh_token' - }); - - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - - const tokens = apiResponse.body; - - response.cookie('refresh_token', tokens.refresh_token, { domain : '.pretendo.network' }); - response.cookie('access_token', tokens.access_token, { domain : '.pretendo.network' }); - response.cookie('token_type', tokens.token_type, { domain : '.pretendo.network' }); - - apiResponse = await util.apiPostGetRequest('/v1/connections/add/discord', { - 'Authorization': `${tokens.token_type} ${tokens.access_token}` - }, { - data: { - id: account.connections.discord.id, - access_token: tokens.access_token, - refresh_token: tokens.refresh_token, - } - }); - - // If still failed, something went horribly wrong - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - } - - account.connections.discord.access_token = tokens.access_token; - account.connections.discord.refresh_token = tokens.refresh_token; - } - - // Get the users Discord roles to check if they are a tester - const { roles } = await discordOAuth.getMemberRolesForGuild({ - userId: account.connections.discord.id, - guildId: config.discord.guild_id, - botToken: config.discord.bot_token - }); - - // Only run this check if not already a tester (edge case) - if (!renderData.isTester) { - // 409116477212459008 = Developer - // 882247322933801030 = Super Mario (Patreon tier) - renderData.isTester = roles.some(role => config.discord.tester_roles.includes(role)); - } - } else { - // If no Discord account linked, generate an auth URL - const discordAuthURL = discordOAuth.generateAuthUrl({ - scope: ['identify', 'guilds'], - state: crypto.randomBytes(16).toString('hex'), - }); - - renderData.discordAuthURL = discordAuthURL; - } - - response.render('account/account', renderData); -}); - -router.get('/login', async (request, response) => { - const renderData = { - layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), - error: request.cookies.error - }; - - response.clearCookie('error', { domain: '.pretendo.network' }); - - response.render('account/login', renderData); -}); - -router.post('/login', async (request, response) => { - const { username, password } = request.body; - - let apiResponse = await util.apiPostGetRequest('/v1/login', {}, { - username, - password, - grant_type: 'password' - }); - - if (apiResponse.statusCode !== 200) { - response.cookie('error', apiResponse.body.error, { domain: '.pretendo.network' }); - return response.redirect('/account/login'); - } - - const tokens = apiResponse.body; - - response.cookie('refresh_token', tokens.refresh_token, { domain : '.pretendo.network' }); - response.cookie('access_token', tokens.access_token, { domain : '.pretendo.network' }); - response.cookie('token_type', tokens.token_type, { domain : '.pretendo.network' }); - - apiResponse = await util.apiGetRequest('/v1/user', { - 'Authorization': `${tokens.token_type} ${tokens.access_token}` - }); - - const account = apiResponse.body; - - const hashedPassword = util.nintendoPasswordHash(password, account.pid); - const hashedPasswordBuffer = Buffer.from(hashedPassword, 'hex'); - - const cipher = crypto.createCipheriv('aes-256-cbc', aesKey, Buffer.alloc(16)); - - let encryptedBody = cipher.update(hashedPasswordBuffer); - encryptedBody = Buffer.concat([encryptedBody, cipher.final()]); - - response.cookie('ph', encryptedBody.toString('hex'), { domain: '.pretendo.network' }); - - response.redirect('/account'); -}); - -router.get('/register', async (request, response) => { - const renderData = { - layout: 'main', - locale: util.getLocale(request.locale.region, request.locale.language), - localeString: request.locale.toString(), - error: request.cookies.error, - email: request.cookies.email, - username: request.cookies.username, - mii_name: request.cookies.mii_name, - }; - - response.clearCookie('error', { domain: '.pretendo.network' }); - response.clearCookie('email', { domain: '.pretendo.network' }); - response.clearCookie('username', { domain: '.pretendo.network' }); - response.clearCookie('mii_name', { domain: '.pretendo.network' }); - - response.render('account/register', renderData); -}); - -router.post('/register', async (request, response) => { - const { email, username, mii_name, password, password_confirm, 'h-captcha-response': hCaptchaResponse } = request.body; - - response.cookie('email', email, { domain: '.pretendo.network' }); - response.cookie('username', username, { domain: '.pretendo.network' }); - response.cookie('mii_name', mii_name, { domain: '.pretendo.network' }); - - const apiResponse = await util.apiPostGetRequest('/v1/register', {}, { - email, username, mii_name, password, password_confirm, hCaptchaResponse - }); - - if (apiResponse.statusCode !== 200) { - response.cookie('error', apiResponse.body.error, { domain: '.pretendo.network' }); - return response.redirect('/account/register'); - } - - const tokens = apiResponse.body; - - response.cookie('refresh_token', tokens.refresh_token, { domain: '.pretendo.network' }); - response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' }); - response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' }); - - response.clearCookie('error', { domain: '.pretendo.network' }); - response.clearCookie('email', { domain: '.pretendo.network' }); - response.clearCookie('username', { domain: '.pretendo.network' }); - response.clearCookie('mii_name', { domain: '.pretendo.network' }); - - response.redirect('/account'); -}); - -router.get('/connect/discord', async (request, response) => { - let tokens; - try { - // Attempt to get OAuth2 tokens - tokens = await discordOAuth.tokenRequest({ - code: request.query.code, - scope: 'identify guilds', - grantType: 'authorization_code', - }); - } catch (error) { - response.cookie('error', 'Invalid Discord authorization code. Please try again', { domain: '.pretendo.network' }); - return response.redirect('/account'); - } - - // Get Discord user data - const user = await discordOAuth.getUser(tokens.access_token); - - // Link the Discord account to the PNID - let apiResponse = await util.apiPostGetRequest('/v1/connections/add/discord', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` - }, { - data: { - id: user.id, - access_token: tokens.access_token, - refresh_token: tokens.refresh_token, - } - }); - - if (apiResponse.statusCode !== 200) { - // Assume expired, refresh and retry request - apiResponse = await util.apiPostGetRequest('/v1/login', {}, { - refresh_token: request.cookies.refresh_token, - grant_type: 'refresh_token' - }); - - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - - const tokens = apiResponse.body; - - response.cookie('refresh_token', tokens.refresh_token, { domain: '.pretendo.network' }); - response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' }); - response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' }); - - apiResponse = await util.apiPostGetRequest('/v1/connections/add/discord', { - 'Authorization': `${tokens.token_type} ${tokens.access_token}` - }, { - data: { - id: user.id, - access_token: tokens.access_token, - refresh_token: tokens.refresh_token, - } - }); - - // If still failed, something went horribly wrong - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - } - - response.cookie('linked', 'Discord', { domain: '.pretendo.network' }).redirect('/account'); -}); - -router.get('/online-files', async (request, response) => { - - // Verify the user is logged in - if (!request.cookies.access_token || !request.cookies.refresh_token|| !request.cookies.ph) { - return response.redirect('/account/login'); - } - - // Attempt to get user data - let apiResponse = await util.apiGetRequest('/v1/user', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` - }); - - if (apiResponse.statusCode !== 200) { - // Assume expired, refresh and retry request - apiResponse = await util.apiPostGetRequest('/v1/login', {}, { - refresh_token: request.cookies.refresh_token, - grant_type: 'refresh_token' - }); - - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - - const tokens = apiResponse.body; - - response.cookie('refresh_token', tokens.refresh_token, { domain: '.pretendo.network' }); - response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' }); - response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' }); - - apiResponse = await util.apiGetRequest('/v1/user', { - 'Authorization': `${tokens.token_type} ${tokens.access_token}` - }); - } - - // If still failed, something went horribly wrong - if (apiResponse.statusCode !== 200) { - // TODO: Error message - return response.status(apiResponse.statusCode).json({ - error: 'Bad' - }); - } - - const account = apiResponse.body; - - const decipher = crypto.createDecipheriv('aes-256-cbc', aesKey, Buffer.alloc(16)); - - let decryptedPasswordHash = decipher.update(Buffer.from(request.cookies.ph, 'hex')); - decryptedPasswordHash = Buffer.concat([decryptedPasswordHash, decipher.final()]); - - const miiNameBuffer = Buffer.alloc(0x16); - const miiName = Buffer.from(account.mii.name, 'utf16le').swap16(); - miiName.copy(miiNameBuffer); - - let accountDat = 'AccountInstance_00000000\n'; - accountDat += 'PersistentId=80000001\n'; - accountDat += 'TransferableIdBase=0\n'; - accountDat += `Uuid=${uuidv4().replace(/-/g, '')}\n`; - accountDat += `MiiData=${Buffer.from(account.mii.data, 'base64').toString('hex')}\n`; - accountDat += `MiiName=${miiNameBuffer.toString('hex')}\n`; - accountDat += `AccountId=${account.username}\n`; - accountDat += 'BirthYear=0\n'; - accountDat += 'BirthMonth=0\n'; - accountDat += 'BirthDay=0\n'; - accountDat += 'Gender=0\n'; - accountDat += `EmailAddress=${account.email.address}\n`; - accountDat += 'Country=0\n'; - accountDat += 'SimpleAddressId=0\n'; - accountDat += `PrincipalId=${account.pid.toString(16)}\n`; - accountDat += 'IsPasswordCacheEnabled=1\n'; - accountDat += `AccountPasswordCache=${decryptedPasswordHash.toString('hex')}`; - - const onlineFiles = new AdmZip(); - - onlineFiles.addFile('mlc01/usr/save/system/act/80000001/account.dat', Buffer.from(accountDat)); // Minimal account.dat - onlineFiles.addFile('otp.bin', Buffer.alloc(0x400)); // nulled OTP - onlineFiles.addFile('seeprom.bin', Buffer.alloc(0x200)); // nulled SEEPROM - - response.status(200); - response.set('Content-Disposition', 'attachment; filename="Online Files.zip'); - response.set('Content-Type', 'application/zip'); - - response.end(onlineFiles.toBuffer()); -}); - -router.get('/miieditor', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - // Should obviously be the user's - const encodedUserMiiData = 'AwAAQOlVognnx0GC2X0LLQOzuI0n2QAAAUBiAGUAbABsAGEAAABFAAAAAAAAAEBAEgCBAQRoQxggNEYUgRIXaA0AACkDUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP6G'; - - // Adapted from https://www.3dbrew.org/wiki/Mii#Mapped_Editor_.3C-.3E_Hex_values - - const editorToHex = { - 'face': [ - 0x00,0x01,0x08,0x02,0x03,0x09,0x04,0x05,0x0a,0x06,0x07,0x0b - ], - 'hairs': [ - [0x21,0x2f,0x28,0x25,0x20,0x6b,0x30,0x33,0x37,0x46,0x2c,0x42], - [0x34,0x32,0x26,0x31,0x2b,0x1f,0x38,0x44,0x3e,0x73,0x4c,0x77], - [0x40,0x51,0x74,0x79,0x16,0x3a,0x3c,0x57,0x7d,0x75,0x49,0x4b], - [0x2a,0x59,0x39,0x36,0x50,0x22,0x17,0x56,0x58,0x76,0x27,0x24], - [0x2d,0x43,0x3b,0x41,0x29,0x1e,0x0c,0x10,0x0a,0x52,0x80,0x81], - [0x0e,0x5f,0x69,0x64,0x06,0x14,0x5d,0x66,0x1b,0x04,0x11,0x6e], - [0x7b,0x08,0x6a,0x48,0x03,0x15,0x00,0x62,0x3f,0x5a,0x0b,0x78], - [0x05,0x4a,0x6c,0x5e,0x7c,0x19,0x63,0x45,0x23,0x0d,0x7a,0x71], - [0x35,0x18,0x55,0x53,0x47,0x83,0x60,0x65,0x1d,0x07,0x0f,0x70], - [0x4f,0x01,0x6d,0x7f,0x5b,0x1a,0x3d,0x67,0x02,0x4d,0x12,0x5c], - [0x54,0x09,0x13,0x82,0x61,0x68,0x2e,0x4e,0x1c,0x72,0x7e,0x6f] - ], - 'eyebrows': [ - [0x06,0x00,0x0c,0x01,0x09,0x13,0x07,0x15,0x08,0x11,0x05,0x04], - [0x0b,0x0a,0x02,0x03,0x0e,0x14,0x0f,0x0d,0x16,0x12,0x10,0x17] - ], - 'eyes': [ - [0x02,0x04,0x00,0x08,0x27,0x11,0x01,0x1a,0x10,0x0f,0x1b,0x14], - [0x21,0x0b,0x13,0x20,0x09,0x0c,0x17,0x22,0x15,0x19,0x28,0x23], - [0x05,0x29,0x0d,0x24,0x25,0x06,0x18,0x1e,0x1f,0x12,0x1c,0x2e], - [0x07,0x2c,0x26,0x2a,0x2d,0x1d,0x03,0x2b,0x16,0x0a,0x0e,0x2f], - [0x30,0x31,0x32,0x35,0x3b,0x38,0x36,0x3a,0x39,0x37,0x33,0x34] - ], - 'nose': [ - [0x01,0x0a,0x02,0x03,0x06,0x00, 0x05,0x04,0x08,0x09,0x07,0x0B], - [0x0d,0x0e,0x0c,0x11,0x10,0x0f] - ], - 'mouth': [ - [0x17,0x01,0x13,0x15,0x16,0x05,0x00,0x08,0x0a,0x10,0x06,0x0d], - [0x07,0x09,0x02,0x11,0x03,0x04,0x0f,0x0b,0x14,0x12,0x0e,0x0c], - [0x1b,0x1e,0x18,0x19,0x1d,0x1c,0x1a,0x23,0x1f,0x22,0x21,0x20] - ] - }; - - response.render('account/miieditor', { - layout: 'main', - locale, - localeString: reqLocale.toString(), - encodedUserMiiData, - editorToHex - }); -}); - -module.exports = router; \ No newline at end of file diff --git a/src/routers/aprilfools.js b/src/routers/aprilfools.js deleted file mode 100644 index c44c745..0000000 --- a/src/routers/aprilfools.js +++ /dev/null @@ -1,17 +0,0 @@ -const { Router } = require('express'); -const util = require('../util'); -const router = new Router(); - -router.get('/', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - response.render('aprilfools', { - layout: 'main', - locale, - localeString: reqLocale.toString(), - }); -}); - -module.exports = router; diff --git a/src/routers/docs.js b/src/routers/docs.js deleted file mode 100644 index c39205c..0000000 --- a/src/routers/docs.js +++ /dev/null @@ -1,78 +0,0 @@ -const { Router } = require('express'); -const util = require('../util'); -const router = new Router(); - -const fs = require('fs'); -const path = require('path'); -const { marked } = require('marked'); - -router.get('/', async (request, response) => { - response.redirect('/docs/welcome'); -}); - -router.get('/search', async (request, response) => { - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - const localeString = reqLocale.toString(); - - response.render('docs/search', { - layout: 'main', - locale, - localeString, - currentPage: request.params.slug, - }); -}); - -router.get('/:slug', async (request, response, next) => { - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - const localeString = reqLocale.toString(); - - // Get the name of the page from the URL - const pageName = request.params.slug; - - let markdownLocale = localeString; - let missingInLocale = false; - // Check if the MD file exists in the user's locale, if not try en-US and show notice, or finally log error and show 404. - if (fs.existsSync(path.join('docs', localeString, `${pageName}.md`))) { - null; - } else if (fs.existsSync(path.join('docs', 'en-US', `${pageName}.md`))) { - markdownLocale = 'en-US'; - missingInLocale = true; - } else { - next(); - return; - } - - let content; - // Get the markdown file corresponding to the page. - content = fs.readFileSync(path.join('docs', markdownLocale, `${pageName}.md`), 'utf-8'); - - // Replace [yt-iframe](videoID) with the full '); - - // Convert the content into HTML - content = marked.parse(content); - - // A boolean to show the quick links grid or not. - let showQuickLinks = false; - if (pageName === 'welcome') { - showQuickLinks = true; - } - - response.render('docs/docs', { - layout: 'main', - locale, - localeString, - content, - currentPage: request.params.slug, - missingInLocale, - showQuickLinks - }); -}); - -module.exports = router; diff --git a/src/routers/home.js b/src/routers/home.js deleted file mode 100644 index f670c00..0000000 --- a/src/routers/home.js +++ /dev/null @@ -1,88 +0,0 @@ -const { Router } = require('express'); -const util = require('../util'); -const { boards } = require('../../boards/boards.json'); -const router = new Router(); - -const { getTrelloCache } = require('../trello'); - -router.get('/', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - const cache = await getTrelloCache(); - - // Builds the arrays of people for the special thanks section - - // Shuffles the special thanks people - let specialThanksPeople = locale.specialThanks.people.slice(); - function shuffleArray(array) { - for (let i = array.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [array[i], array[j]] = [array[j], array[i]]; - } - } - shuffleArray(specialThanksPeople); - - // Slices the array in half - const specialThanksFirstRow = specialThanksPeople.slice(0, 3); - const specialThanksSecondRow = specialThanksPeople.slice(3, 7); - - // Builds the final array to be sent to the view, and triples each row. - specialThanksPeople = { - first: specialThanksFirstRow.concat(specialThanksFirstRow).concat(specialThanksFirstRow), - second: specialThanksSecondRow.concat(specialThanksSecondRow).concat(specialThanksSecondRow) - }; - - // Progress - - // Creates an object to hold the total progress - const totalProgress = { - title: null, - _calc: { - percentageSum: 0 - }, - percent: 0, - progress: { - not_started: [], - started: [], - completed: [] - } - }; - - // Calculates individual completion percentages and progress states - cache.sections.forEach(section => { - const { not_started, started, completed } = section.progress; - - // Calculates the completion percentage of the project, and sums it to the total - const sectionCompletionPercentage = (completed.length + started.length * 0.5) / (completed.length + started.length + not_started.length); - totalProgress._calc.percentageSum += sectionCompletionPercentage; - - const sectionTitle = `${section.title} [${Math.round(sectionCompletionPercentage * 100)}%]`; - - if (completed !== [] && started + not_started === []) { - // if all the section tasks have been completed, push to completed - totalProgress.progress.completed.push(sectionTitle); - } else if (not_started !== [] && started + completed === []) { - // if none the section tasks have been completed or started, push to not started - totalProgress.progress.not_started.push(sectionTitle); - } else { - // for all other combos, push to started - totalProgress.progress.started.push(sectionTitle); - } - }); - - // Calculates global completion percentage - totalProgress.percent = Math.round(totalProgress._calc.percentageSum / cache.sections.length * 100); - - response.render('home', { - layout: 'main', - featuredFeatureList: totalProgress, - boards, - locale, - localeString: reqLocale.toString(), - specialThanksPeople - }); -}); - -module.exports = router; diff --git a/src/routers/localization.js b/src/routers/localization.js deleted file mode 100644 index 3de3365..0000000 --- a/src/routers/localization.js +++ /dev/null @@ -1,17 +0,0 @@ -const { Router } = require('express'); -const util = require('../util'); -const router = new Router(); - -router.get('/', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - response.render('localization', { - layout: 'main', - locale, - localeString: reqLocale.toString(), - }); -}); - -module.exports = router; diff --git a/src/routers/progress.js b/src/routers/progress.js deleted file mode 100644 index 1e03892..0000000 --- a/src/routers/progress.js +++ /dev/null @@ -1,24 +0,0 @@ -const { Router } = require('express'); -const util = require('../util'); -const { boards } = require('../../boards/boards.json'); -const router = new Router(); - -const { getTrelloCache } = require('../trello'); - -router.get('/', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - const cache = await getTrelloCache(); - - response.render('progress', { - layout: 'main', - boards, - locale, - localeString: reqLocale.toString(), - progressLists: cache - }); -}); - -module.exports = router; diff --git a/src/routes/account.js b/src/routes/account.js new file mode 100644 index 0000000..166e185 --- /dev/null +++ b/src/routes/account.js @@ -0,0 +1,430 @@ +const express = require('express'); +const crypto = require('crypto'); +const DiscordOauth2 = require('discord-oauth2'); +const { v4: uuidv4 } = require('uuid'); +const AdmZip = require('adm-zip'); +const Stripe = require('stripe'); +const { REST: DiscordRest } = require('@discordjs/rest'); +const { Routes: DiscordRoutes } = require('discord-api-types/v10'); +const requireLoginMiddleware = require('../middleware/require-login'); +const database = require('../database'); +const cache = require('../cache'); +const util = require('../util'); +const logger = require('../logger'); +const config = require('../../config.json'); +const editorJSON = require('../json/miieditor.json'); + +const { Router } = express; + +const stripe = new Stripe(config.stripe.secret_key); +const router = new Router(); +const discordRest = new DiscordRest({ version: '10' }).setToken(config.discord.bot_token); + +// Create OAuth client +const discordOAuth = new DiscordOauth2({ + clientId: config.discord.client_id, + clientSecret: config.discord.client_secret, + redirectUri: `${config.http.base_url}/account/connect/discord`, + version: 'v10' +}); + +router.get('/', requireLoginMiddleware, async (request, response) => { + // Setup the data to be sent to the handlebars renderer + const renderData = {}; + + // Check for Stripe messages + const { upgrade_success } = request.query; + + if (upgrade_success === 'true') { + renderData.success_message = 'Account upgraded successfully'; + } else if (upgrade_success === 'false') { + renderData.error_message = 'Account upgrade failed'; + } + + const { account } = request; + const { pnid } = request; + + renderData.tierName = pnid.get('connections.stripe.tier_name'); + renderData.tierLevel = pnid.get('connections.stripe.tier_level'); + renderData.account = account; + renderData.isTester = account.access_level > 0; + + // Check if a Discord account is linked to the PNID + if (account.connections.discord.id && account.connections.discord.id.trim() !== '') { + try { + renderData.discordUser = await discordRest.get(DiscordRoutes.user(account.connections.discord.id)); + } catch (error) { + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + } + } else { + // If no Discord account linked, generate an auth URL + const discordAuthURL = discordOAuth.generateAuthUrl({ + scope: ['identify', 'guilds'], + state: crypto.randomBytes(16).toString('hex'), + }); + + renderData.discordAuthURL = discordAuthURL; + } + + response.render('account/account', renderData); +}); + +router.get('/login', async (request, response) => { + response.render('account/login'); +}); + +router.post('/login', async (request, response) => { + const { username, password } = request.body; + + try { + const tokens = await util.login(username, password); + + response.cookie('refresh_token', tokens.refresh_token, { domain: '.pretendo.network' }); + response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' }); + response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' }); + + response.redirect(request.redirect || '/account'); + + } catch (error) { + console.log(error); + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + return response.redirect('/account/login'); + } +}); + +router.get('/register', async (request, response) => { + const renderData = { + email: request.cookies.email, + username: request.cookies.username, + mii_name: request.cookies.mii_name, + }; + + response.clearCookie('email', { domain: '.pretendo.network' }); + response.clearCookie('username', { domain: '.pretendo.network' }); + response.clearCookie('mii_name', { domain: '.pretendo.network' }); + + response.render('account/register', renderData); +}); + +router.post('/register', async (request, response) => { + const { email, username, mii_name, password, password_confirm, 'h-captcha-response': hCaptchaResponse } = request.body; + + response.cookie('email', email, { domain: '.pretendo.network' }); + response.cookie('username', username, { domain: '.pretendo.network' }); + response.cookie('mii_name', mii_name, { domain: '.pretendo.network' }); + + try { + const tokens = await util.register({ + email, + username, + mii_name, + password, + password_confirm, + hCaptchaResponse + }); + + response.cookie('refresh_token', tokens.refresh_token, { domain: '.pretendo.network' }); + response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' }); + response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' }); + + response.clearCookie('email', { domain: '.pretendo.network' }); + response.clearCookie('username', { domain: '.pretendo.network' }); + response.clearCookie('mii_name', { domain: '.pretendo.network' }); + + response.redirect(request.redirect || '/account'); + } catch (error) { + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + return response.redirect('/account/register'); + } +}); + +router.get('/logout', async(_request, response) => { + response.clearCookie('refresh_token', { domain: '.pretendo.network' }); + response.clearCookie('access_token', { domain: '.pretendo.network' }); + response.clearCookie('token_type', { domain: '.pretendo.network' }); + + response.redirect('/'); +}); + +router.get('/connect/discord', requireLoginMiddleware, async (request, response) => { + const { pnid } = request; + let tokens; + try { + // Attempt to get OAuth2 tokens + tokens = await discordOAuth.tokenRequest({ + code: request.query.code, + scope: 'identify guilds', + grantType: 'authorization_code', + }); + } catch (error) { + response.cookie('error_message', 'Invalid Discord authorization code. Please try again', { domain: '.pretendo.network' }); + return response.redirect('/account'); + } + + // Get Discord user data + const discordUser = await discordOAuth.getUser(tokens.access_token); + + try { + await util.updateDiscordConnection(discordUser, request, response); + + const priceId = pnid.get('connections.stripe.price_id'); + + if (priceId && priceId.trim() !== '') { + const price = await stripe.prices.retrieve(priceId); + const product = await stripe.products.retrieve(price.product); + const discordRoleId = product.metadata.discord_role_id; + const discordId = discordUser.id; + + await util.assignDiscordMemberSupporterRole(discordId, discordRoleId); + + if (product.metadata.beta === 'true') { + await util.assignDiscordMemberTesterRole(discordId); + } + } + + response.cookie('success_message', 'Discord account linked successfully', { domain: '.pretendo.network' }); + return response.redirect('/account'); + } catch (error) { + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + return response.redirect('/account'); + } +}); + +router.get('/remove/discord', requireLoginMiddleware, async (request, response) => { + const { account, pnid } = request; + + try { + await util.removeDiscordConnection(request, response); + + const priceId = pnid.get('connections.stripe.price_id'); + + if (priceId && priceId.trim() !== '') { + const price = await stripe.prices.retrieve(priceId); + const product = await stripe.products.retrieve(price.product); + const discordRoleId = product.metadata.discord_role_id; + const discordId = account.connections.discord.id; + + await util.removeDiscordMemberSupporterRole(discordId, discordRoleId); + + if (product.metadata.beta === 'true') { + await util.removeDiscordMemberTesterRole(discordId); + } + } + + response.cookie('success_message', 'Discord account removed successfully', { domain: '.pretendo.network' }); + return response.redirect('/account'); + } catch (error) { + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + return response.redirect('/account'); + } +}); + +router.post('/online-files', requireLoginMiddleware, async (request, response) => { + const { account } = request; + const { password } = request.body; + + const hashedPassword = util.nintendoPasswordHash(password, account.pid); + + const miiNameBuffer = Buffer.alloc(0x16); + const miiName = Buffer.from(account.mii.name, 'utf16le').swap16(); + miiName.copy(miiNameBuffer); + + let accountDat = 'AccountInstance_00000000\n'; + accountDat += 'PersistentId=80000001\n'; + accountDat += 'TransferableIdBase=0\n'; + accountDat += `Uuid=${uuidv4().replace(/-/g, '')}\n`; + accountDat += `MiiData=${Buffer.from(account.mii.data, 'base64').toString('hex')}\n`; + accountDat += `MiiName=${miiNameBuffer.toString('hex')}\n`; + accountDat += `AccountId=${account.username}\n`; + accountDat += 'BirthYear=0\n'; + accountDat += 'BirthMonth=0\n'; + accountDat += 'BirthDay=0\n'; + accountDat += 'Gender=0\n'; + accountDat += `EmailAddress=${account.email.address}\n`; + accountDat += 'Country=0\n'; + accountDat += 'SimpleAddressId=0\n'; + accountDat += `PrincipalId=${account.pid.toString(16)}\n`; + accountDat += 'IsPasswordCacheEnabled=1\n'; + accountDat += `AccountPasswordCache=${hashedPassword}`; + + const onlineFiles = new AdmZip(); + + onlineFiles.addFile('mlc01/usr/save/system/act/80000001/account.dat', Buffer.from(accountDat)); // Minimal account.dat + onlineFiles.addFile('otp.bin', Buffer.alloc(0x400)); // nulled OTP + onlineFiles.addFile('seeprom.bin', Buffer.alloc(0x200)); // nulled SEEPROM + + response.status(200); + response.set('Content-Disposition', 'attachment; filename="Cemu Pretendo Online Files.zip'); + response.set('Content-Type', 'application/zip'); + + response.end(onlineFiles.toBuffer()); +}); + +router.get('/miieditor', requireLoginMiddleware, async (request, response) => { + const { account } = request; + + response.render('account/miieditor', { + encodedUserMiiData: account.mii.data, + editorJSON + }); +}); + +router.get('/upgrade', requireLoginMiddleware, async (request, response) => { + // Set user account info to render data + const { pnid } = request; + + const renderData = { + error: request.cookies.error, + currentTier: pnid.get('connections.stripe.price_id'), + donationCache: await cache.getStripeDonationCache() + }; + + const { data: prices } = await stripe.prices.list(); + const { data: products } = await stripe.products.list(); + + renderData.tiers = products + .filter(product => product.active) + .sort((a, b) => +a.metadata.tier_level - +b.metadata.tier_level) + .map(product => { + const price = prices.find(price => price.product === product.id); + const perks = []; + + if (product.metadata.discord_read === 'true') { + perks.push('Read-only access to select dev channels on Discord'); + } + + if (product.metadata.beta === 'true') { + perks.push('Access the beta servers'); + } + + return { + price_id: price.id, + thumbnail: product.images[0], + name: product.name, + description: product.description, + perks, + price: (price.unit_amount / 100).toLocaleString('en-US', { style: 'currency', currency: 'USD' }), + }; + }); + + response.render('account/upgrade', renderData); +}); + +router.post('/stripe/checkout/:priceId', requireLoginMiddleware, async (request, response) => { + // Set user account info to render data + const { account } = request; + const pid = account.pid; + + let customer; + const { data: searchResults } = await stripe.customers.search({ + query: `metadata['pnid_pid']:'${pid}'` + }); + + if (searchResults.length !== 0) { + customer = searchResults[0]; + } else { + customer = await stripe.customers.create({ + email: account.email.address, + metadata: { + pnid_pid: pid + } + }); + } + + await database.PNID.updateOne({ pid }, { + $set: { + 'connections.stripe.customer_id': customer.id, // ensure PNID always has latest customer ID + 'connections.stripe.latest_webhook_timestamp': 0 + } + }, { upsert: true }).exec(); + + const priceId = request.params.priceId; + + const pnid = await database.PNID.findOne({ pid }); + + if (pnid.get('access_level') >= 2) { + response.cookie('error_message', 'Staff members do not need to purchase tiers', { domain: '.pretendo.network' }); + return response.redirect('/account'); + } + + try { + const session = await stripe.checkout.sessions.create({ + line_items: [ + { + price: priceId, + quantity: 1, + }, + ], + customer: customer.id, + mode: 'subscription', + success_url: `${config.http.base_url}/account?upgrade_success=true`, + cancel_url: `${config.http.base_url}/account?upgrade_success=false` + }); + + return response.redirect(303, session.url); + } catch (error) { + // Maybe we need a dedicated error page? + // Or handle this as not cookies? + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + + return response.redirect('/account'); + } +}); + +router.post('/stripe/unsubscribe', requireLoginMiddleware, async (request, response) => { + // Set user account info to render data + const { pnid } = request; + + const pid = pnid.get('pid'); + const subscriptionId = pnid.get('connections.stripe.subscription_id'); + const tierName = pnid.get('connections.stripe.tier_name'); + + if (subscriptionId) { + try { + await stripe.subscriptions.del(subscriptionId); + + const updateData = { + 'connections.stripe.subscription_id': null, + 'connections.stripe.price_id': null, + 'connections.stripe.tier_level': 0, + 'connections.stripe.tier_name': null, + }; + + if (pnid.get('access_level') < 2) { + // Fail-safe for if staff members reach here + // Mostly only useful during testing + updateData.access_level = 0; + } + + await database.PNID.updateOne({ pid }, { $set: updateData }).exec(); + } catch (error) { + logger.error(`Error canceling old user subscription | ${pnid.get('connections.stripe.customer_id')}, ${pid}, ${subscriptionId} | - ${error.message}`); + + response.cookie('error_message', 'Error canceling subscription! Contact support if issue persists', { domain: '.pretendo.network' }); + + return response.redirect('/account'); + } + } + + response.cookie('success', `Unsubscribed from ${tierName}`, { domain: '.pretendo.network' }); + return response.redirect('/account'); +}); + +router.post('/stripe/webhook', async (request, response) => { + const stripeSignature = request.headers['stripe-signature']; + let event; + + try { + event = stripe.webhooks.constructEvent(request.rawBody, stripeSignature, config.stripe.webhook_secret); + } catch (error) { + logger.error(error.message); + return response.status(400).send(`Webhook Error: ${error.message}`); + } + + await util.handleStripeEvent(event); + + response.json({ received: true }); +}); + + +module.exports = router; diff --git a/src/routes/aprilfools.js b/src/routes/aprilfools.js new file mode 100644 index 0000000..94bdb4b --- /dev/null +++ b/src/routes/aprilfools.js @@ -0,0 +1,8 @@ +const { Router } = require('express'); +const router = new Router(); + +router.get('/', async (request, response) => { + response.render('aprilfools'); +}); + +module.exports = router; diff --git a/src/routers/blog.js b/src/routes/blog.js similarity index 83% rename from src/routers/blog.js rename to src/routes/blog.js index c35afc8..2e80238 100644 --- a/src/routers/blog.js +++ b/src/routes/blog.js @@ -1,5 +1,4 @@ const { Router } = require('express'); -const util = require('../util'); const logger = require('../logger'); const router = new Router(); @@ -36,18 +35,11 @@ const postList = () => { }; router.get('/', async (request, response) => { - - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - const localeString = reqLocale.toString(); - - response.render('blog/blog', { - layout: 'main', - locale, - localeString, + const renderData = { postList - }); + }; + + response.render('blog/blog', renderData); }); // RSS feed @@ -69,10 +61,10 @@ router.get('/feed.xml', async (request, response) => { router.get('/:slug', async (request, response, next) => { - const reqLocale = request.locale; - const locale = util.getLocale(reqLocale.region, reqLocale.language); - - const localeString = reqLocale.toString(); + const renderData = { + layout: 'blog-opengraph', + postList, + }; // Get the name of the post from the URL const postName = request.params.slug; @@ -89,6 +81,7 @@ router.get('/:slug', async (request, response, next) => { // Convert the post info into JSON and separate it and the content // eslint-disable-next-line prefer-const let { data: postInfo, content } = matter(rawPost); + renderData.postInfo = postInfo; // Replace [yt-iframe](videoID) with the full `; + }); + + const htmlContent = marked.parse(markedContent); + return htmlContent; } function apiGetRequest(path, headers) { @@ -30,7 +81,7 @@ function apiGetRequest(path, headers) { }); } -function apiPostGetRequest(path, headers, json) { +function apiPostRequest(path, headers, json) { return got.post(`https://api.pretendo.cc${path}`, { responseType: 'json', throwHttpErrors: false, @@ -42,7 +93,7 @@ function apiPostGetRequest(path, headers, json) { }); } -function apiDeleteGetRequest(path, headers, json) { +function apiDeleteRequest(path, headers, json) { return got.delete(`https://api.pretendo.cc${path}`, { throwHttpErrors: false, https: { @@ -53,6 +104,106 @@ function apiDeleteGetRequest(path, headers, json) { }); } +async function register(registerData) { + const apiResponse = await apiPostRequest('/v1/register', {}, registerData); + + if (apiResponse.statusCode !== 200) { + throw new Error(apiResponse.body.error); + } + + return apiResponse.body; +} + +async function login(username, password) { + const apiResponse = await apiPostRequest('/v1/login', {}, { + username, + password, + grant_type: 'password' + }); + + if (apiResponse.statusCode !== 200) { + throw new Error(apiResponse.body.error); + } + + return apiResponse.body; +} + +async function refreshLogin(request, response) { + const apiResponse = await apiPostRequest('/v1/login', {}, { + refresh_token: request.cookies.refresh_token, + grant_type: 'refresh_token' + }); + + if (apiResponse.statusCode !== 200) { + // TODO: Error message + throw new Error('Bad'); + } + + const tokens = apiResponse.body; + + response.cookie('refresh_token', tokens.refresh_token, { domain: '.pretendo.network' }); + response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' }); + response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' }); + + request.cookies.refresh_token = tokens.refresh_token; + request.cookies.access_token = tokens.access_token; + request.cookies.token_type = tokens.token_type; +} + +async function getUserAccountData(request, response, fromRetry=false) { + const apiResponse = await apiGetRequest('/v1/user', { + 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` + }); + + if (apiResponse.statusCode !== 200 && fromRetry === true) { + // TODO: Error message + throw new Error('Bad'); + } + + if (apiResponse.statusCode !== 200) { + await refreshLogin(request, response); + return await getUserAccountData(request, response, true); + } + + return apiResponse.body; +} + +async function updateDiscordConnection(discordUser, request, response, fromRetry=false) { + const apiResponse = await apiPostRequest('/v1/connections/add/discord', { + 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` + }, { + data: { + id: discordUser.id + } + }); + + if (apiResponse.statusCode !== 200 && fromRetry === true) { + // TODO: Error message + throw new Error('Bad'); + } + + if (apiResponse.statusCode !== 200) { + await refreshLogin(request, response); + await updateDiscordConnection(discordUser, request, response, true); + } +} + +async function removeDiscordConnection(request, response, fromRetry = false) { + const apiResponse = await apiDeleteRequest('/v1/connections/remove/discord', { + 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` + }); + + if (apiResponse.statusCode !== 200 && fromRetry === true) { + // TODO: Error message + throw new Error('Bad'); + } + + if (apiResponse.statusCode !== 200) { + await refreshLogin(request, response); + await removeDiscordConnection(request, response, true); + } +} + function nintendoPasswordHash(password, pid) { const pidBuffer = Buffer.alloc(4); pidBuffer.writeUInt32LE(pid); @@ -62,17 +213,267 @@ function nintendoPasswordHash(password, pid) { Buffer.from('\x02\x65\x43\x46'), Buffer.from(password) ]); - + const hashed = crypto.createHash('sha256').update(unpacked).digest().toString('hex'); return hashed; } +async function handleStripeEvent(event) { + if (event.type === 'customer.subscription.updated' || event.type === 'customer.subscription.deleted') { + const subscription = event.data.object; + const product = await stripe.products.retrieve(subscription.plan.product); + const customer = await stripe.customers.retrieve(subscription.customer); + + if (!customer?.metadata?.pnid_pid) { + // No PNID PID linked to customer + if (subscription.status !== 'canceled' && subscription.status !== 'unpaid') { + // Abort and refund! + logger.error(`Stripe user ${customer.id} has no PNID linked! Refunding order`); + + await stripe.subscriptions.del(subscription.id); + + const invoice = await stripe.invoices.retrieve(subscription.latest_invoice); + await stripe.refunds.create({ + payment_intent: invoice.payment_intent + }); + + try { + await mailer.sendMail({ + to: customer.email, + subject: 'Pretendo Network Subscription Failed - No Linked PNID', + text: `Your recent subscription to Pretendo Network has failed.\nThis is due to no PNID PID being linked to the Stripe customer account used. The subscription has been canceled and refunded. Please contact Jon immediately.\nStripe Customer ID: ${customer.id}` + }); + } catch (error) { + logger.error(`Error sending email | ${customer.id}, ${customer.email} | - ${error.message}`); + } + } else { + logger.error(`Stripe user ${customer.id} has no PNID linked!`); + } + + return; + } + + const pid = Number(customer.metadata.pnid_pid); + const pnid = await database.PNID.findOne({ pid }); + + const latestWebhookTimestamp = pnid.get('connections.stripe.latest_webhook_timestamp'); + + if (latestWebhookTimestamp && latestWebhookTimestamp > event.created) { + // Do nothing, this webhook is older than the latest seen + return; + } + + if (!pnid && subscription.status !== 'canceled' && subscription.status !== 'unpaid') { + // PNID does not exist. Abort and refund! + logger.error(`PNID PID ${pid} does not exist! Found on Stripe user ${customer.id}! Refunding order`); + + await stripe.subscriptions.del(subscription.id); + + const invoice = await stripe.invoices.retrieve(subscription.latest_invoice); + await stripe.refunds.create({ + payment_intent: invoice.payment_intent + }); + + try { + await mailer.sendMail({ + to: customer.email, + subject: 'Pretendo Network Subscription Failed - PNID Not Found', + text: `Your recent subscription to Pretendo Network has failed.\nThis is due to the provided PNID not being found. The subscription has been canceled and refunded. Please contact Jon immediately.\nStripe Customer ID: ${customer.id}\nPNID PID: ${pid}` + }); + } catch (error) { + logger.error(`Error sending email | ${customer.id}, ${customer.email} | - ${error.message}`); + } + + return; + } + + const currentSubscriptionId = pnid.get('connections.stripe.subscription_id'); + const discordId = pnid.get('connections.discord.id'); + + if (subscription.status === 'canceled' && currentSubscriptionId && subscription.id !== currentSubscriptionId) { + // Canceling old subscription, do nothing but update webhook date and remove Discord roles + if (product.metadata.beta === 'true') { + removeDiscordMemberTesterRole(discordId).catch(error => { + logger.error(`Error removing user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`); + }); + } + + removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); + }); + + const updateData = { + 'connections.stripe.latest_webhook_timestamp': event.created + }; + + await database.PNID.updateOne({ + pid, + 'connections.stripe.latest_webhook_timestamp': { + $lte: event.created + } + }, { $set: updateData }).exec(); + + return; + } + + const updateData = { + 'connections.stripe.subscription_id': subscription.status === 'active' ? subscription.id : null, + 'connections.stripe.price_id': subscription.status === 'active' ? subscription.plan.id : null, + 'connections.stripe.tier_level': subscription.status === 'active' ? Number(product.metadata.tier_level || 0) : 0, + 'connections.stripe.tier_name': subscription.status === 'active' ? product.name : null, + 'connections.stripe.latest_webhook_timestamp': event.created, + }; + + if (product.metadata.beta === 'true') { + switch (subscription.status) { + case 'active': + if (pnid.access_level < 2) { // only change access level if not staff member + updateData.access_level = 1; + } + + assignDiscordMemberTesterRole(discordId).catch(error => { + logger.error(`Error assigning user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`); + }); + break; + + case 'canceled': // Subscription was canceled + case 'unpaid': // User missed too many payments + if (pnid.access_level < 2) { // only change access level if not staff member + updateData.access_level = 0; + } + + removeDiscordMemberTesterRole(discordId).catch(error => { + logger.error(`Error removing user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`); + }); + break; + + default: + break; + } + } + + await database.PNID.updateOne({ + pid, + 'connections.stripe.latest_webhook_timestamp': { + $lte: event.created + } + }, { $set: updateData }).exec(); + + if (subscription.status === 'active') { + // Get all the customers active subscriptions + const { data: activeSubscriptions } = await stripe.subscriptions.list({ + limit: 100, + status: 'active', + customer: customer.id + }); + + // Order subscriptions by creation time and remove the latest one + const orderedActiveSubscriptions = activeSubscriptions.sort((a, b) => b.created - a.created); + const pastSubscriptions = orderedActiveSubscriptions.slice(1); + + // Remove any old past subscriptions that might still be hanging around + for (const pastSubscription of pastSubscriptions) { + try { + await stripe.subscriptions.del(pastSubscription.id); + } catch (error) { + logger.error(`Error canceling old user subscription | ${customer.id}, ${pid}, ${pastSubscription.id} | - ${error.message}`); + } + } + + try { + await mailer.sendMail({ + to: customer.email, + subject: 'Pretendo Network Subscription - Active', + text: `Thank you for purchasing the ${product.name} tier! We greatly value your support, thank you for helping keep Pretendo Network alive!\nIt may take a moment for your account dashboard to reflect these changes. Please wait a moment and refresh the dashboard to see them!` + }); + } catch (error) { + logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); + } + + assignDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + logger.error(`Error assigning user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); + }); + } + + if (subscription.status === 'canceled') { + try { + await mailer.sendMail({ + to: customer.email, + subject: 'Pretendo Network Subscription - Canceled', + text: `Your subscription for the ${product.name} tier has been canceled. We thank for your previous support, and hope you still enjoy the network! ` + }); + } catch (error) { + logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); + } + + removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); + }); + } + + if (subscription.status === 'unpaid') { + try { + await mailer.sendMail({ + to: customer.email, + subject: 'Pretendo Network Subscription - Unpaid', + text: `Your subscription for the ${product.name} tier has been canceled due to non payment. We thank for your previous support, and hope you still enjoy the network! ` + }); + } catch (error) { + logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); + } + + removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); + }); + } + } +} + +async function assignDiscordMemberSupporterRole(memberId, roleId) { + if (memberId && memberId.trim() !== '') { + await discordRest.put(DiscordRoutes.guildMemberRole(config.discord.guild_id, memberId, config.discord.roles.supporter)); + await discordRest.put(DiscordRoutes.guildMemberRole(config.discord.guild_id, memberId, roleId)); + } +} + +async function assignDiscordMemberTesterRole(memberId) { + if (memberId && memberId.trim() !== '') { + await discordRest.put(DiscordRoutes.guildMemberRole(config.discord.guild_id, memberId, config.discord.roles.tester)); + } +} + +async function removeDiscordMemberSupporterRole(memberId, roleId) { + if (memberId && memberId.trim() !== '') { + await discordRest.delete(DiscordRoutes.guildMemberRole(config.discord.guild_id, memberId, config.discord.roles.supporter)); + await discordRest.delete(DiscordRoutes.guildMemberRole(config.discord.guild_id, memberId, roleId)); + } +} + +async function removeDiscordMemberTesterRole(memberId) { + if (memberId && memberId.trim() !== '') { + await discordRest.delete(DiscordRoutes.guildMemberRole(config.discord.guild_id, memberId, config.discord.roles.tester)); + } +} + module.exports = { fullUrl, getLocale, + getRawDocs, + parseDocs, apiGetRequest, - apiPostGetRequest, - apiDeleteGetRequest, - nintendoPasswordHash -}; \ No newline at end of file + apiPostRequest, + apiDeleteRequest, + register, + login, + refreshLogin, + getUserAccountData, + updateDiscordConnection, + removeDiscordConnection, + nintendoPasswordHash, + handleStripeEvent, + assignDiscordMemberSupporterRole, + assignDiscordMemberTesterRole, + removeDiscordMemberSupporterRole, + removeDiscordMemberTesterRole +}; diff --git a/views/account/account.handlebars b/views/account/account.handlebars index e9d5d0e..2ffe7f6 100644 --- a/views/account/account.handlebars +++ b/views/account/account.handlebars @@ -7,13 +7,30 @@ - -{{#if linked}} +{{#if success_message}} {{/if}} -{{#if error}} +{{#if error_message}} {{/if}} - \ No newline at end of file + + + + + + diff --git a/views/account/login.handlebars b/views/account/login.handlebars index c5373c8..7664ed6 100644 --- a/views/account/login.handlebars +++ b/views/account/login.handlebars @@ -1,48 +1,27 @@
-
-{{/if}} \ No newline at end of file +{{/if}} diff --git a/views/account/miieditor.handlebars b/views/account/miieditor.handlebars index f7f3059..84faca1 100644 --- a/views/account/miieditor.handlebars +++ b/views/account/miieditor.handlebars @@ -1,7 +1,7 @@ -
+
- + -
- -
-
+
+ + Your browser does not support the canvas element. + +
-
-
- - - - - - - - - - - -
-
-
-
- - - -
+
+
+ + + + + + + + + + + +
+ +
+
+ + + + +
-
- {{#each editorToHex.face}} - - - {{/each}} -
+
+ {{#each editorJSON.face}} + + + {{/each}} +
-
- - - - - - - - - - - - -
+
+ + + + + + + + + + + + +
-
- - - - - - - - - - - - - - - - - - - - - - - - -
+
+ {{#each editorJSON.arrayOf12}} + + + {{/each}} +
-
- - - - - - - - - - - - - - - - - - - - - - - - -
+
+ {{#each editorJSON.arrayOf12}} + + + {{/each}} +
-
+
-
-
- {{#each editorToHex.hairs}} -
- {{#each this}} - - - {{/each}} - -
+
+
+ + +
+
+ {{#each editorJSON.hairs}} +
+ {{#each this}} + + + {{/each}} + +
- {{/each}} -
+ {{/each}} +
-
- - - - - - - - - - - - - - - - -
-
+
+ + + + + + + + + + + + + + + + +
+
-
-
- - -
-
- {{#each editorToHex.eyebrows}} -
- {{#each this}} - - - {{/each}} - -
- {{/each}} -
+
+
+ + + +
+
+ {{#each editorJSON.eyebrows}} +
+ {{#each this}} + + + {{/each}} + +
+ {{/each}} +
-
- - - - - - - - - - -
+
+ + + + + + + + + + +
-
- - - - - - - - - - - - - - - - -
-
+
+ + + + + + + + + + + + + + + + +
+
-
-
- - -
-
- {{#each editorToHex.eyes}} -
- {{#each this}} - - - {{/each}} - -
- {{/each}} -
+
+
+ + + +
+
+ {{#each editorJSON.eyes}} +
+ {{#each this}} + + + {{/each}} + +
+ {{/each}} +
-
- - - - - - - - - - - - -
+
+ + + + + + + + + + + + +
-
- - - - - - - - - - -
-
+
+ + + + + + + + + + +
+
-
-
- - -
-
- {{#each editorToHex.nose}} -
- {{#each this}} - - - {{/each}} - -
- {{/each}} -
+
+
+ + +
+
+ {{#each editorJSON.nose}} +
+ {{#each this}} + + + {{/each}} + +
+ {{/each}} +
-
- - - - -
-
+
+ + + + -
-
- - -
-
- {{#each editorToHex.mouth}} -
- {{#each this}} - - - {{/each}} - -
- {{/each}} -
+
+
-
- - - - - - - - - - -
+
+
+ + + +
+
+ {{#each editorJSON.mouth}} +
+ {{#each this}} + + + {{/each}} + +
+ {{/each}} +
-
- - - - -
-
+
+ + + + + + + + + + +
-
-
- - -
-
- - - - - - - - - - - - - - - - - - -
+
+ + + + + + +
+
-
- - - - - - - - - - - - -
+
+
+ + + +
+
+ {{#each editorJSON.arrayOf9}} + + + {{/each}} +
-
- - - - -
-
+
+ + + + + + + + + + + + +
-
-
- - - -
-
- - - - - - - - - - - - -
+
+ + + + -
- - - - - - - - - - - - - - - - -
+
+
-
- - - - - - - - - - - - -
+
+
+ + + + +
+
+ {{#each editorJSON.arrayOf6}} + + + {{/each}} +
-
- - - - -
-
+
+ + + + + + + + + + + + + + + + +
-
-
- - -
-
- - - - -
+
+ {{#each editorJSON.arrayOf6}} + + + {{/each}} +
-
- - - - - - -
-
+
+ + + + +
+
-
-
- - - - -
-
+
+
+ + +
+
+ + + + +
-
-
- - -
-
- - - - -
+
+ + + + + + +
+
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
-
+
+
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+

Save Mii? This will permanently overwrite your current Mii.

+
+
+ + +
+ +
+
+
+ + +
+ +
+
+
+ +
+ + + - \ No newline at end of file + diff --git a/views/account/register.handlebars b/views/account/register.handlebars index 796c46e..8419bad 100644 --- a/views/account/register.handlebars +++ b/views/account/register.handlebars @@ -2,59 +2,38 @@
- -{{/if}} \ No newline at end of file +{{/if}} diff --git a/views/account/upgrade.handlebars b/views/account/upgrade.handlebars new file mode 100644 index 0000000..d353629 --- /dev/null +++ b/views/account/upgrade.handlebars @@ -0,0 +1,110 @@ + +
+ + + {{ localeHelper locale "upgrade.back" }} + + + + + + + +
+ + + + \ No newline at end of file + diff --git a/views/blog/blog.handlebars b/views/blog/blog.handlebars index ea2cba0..d5056e9 100644 --- a/views/blog/blog.handlebars +++ b/views/blog/blog.handlebars @@ -7,23 +7,23 @@
-

{{ localeHelper locale "blogPage" "title" }}

-

{{{ localeHelper locale "blogPage" "description" }}}

+

{{ localeHelper locale "blogPage.title" }}

+

{{{ localeHelper locale "blogPage.description" }}}

- {{#each postList }} + {{#each postList }} {{> footer }} -
\ No newline at end of file + diff --git a/views/blog/blogpost.handlebars b/views/blog/blogpost.handlebars index 2dc00b7..dfb61ec 100644 --- a/views/blog/blogpost.handlebars +++ b/views/blog/blogpost.handlebars @@ -9,12 +9,12 @@

{{{ postInfo.title }}}

- Published by + {{ localeHelper locale "blogPage.published" }}
{{ postInfo.author }} {{{ postInfo.author }}}
- on + {{ localeHelper locale "blogPage.publishedOn" }} {{{ postInfo.date }}}
diff --git a/views/docs/docs.handlebars b/views/docs/docs.handlebars index 584b518..ec5394c 100644 --- a/views/docs/docs.handlebars +++ b/views/docs/docs.handlebars @@ -2,7 +2,7 @@
- + - {{> header}} - - {{> docs-sidebar}} +
+ + {{> header}} +
-
-
- {{#if missingInLocale}} -

{{ localeHelper locale "docs" "missingInLocale" }}

- {{/if}} + {{> docs-sidebar}} - {{#if showQuickLinks}} -

{{ localeHelper locale "docs" "quickLinks" "header" }}

- +
+
+
+ Note! +
+ Pretendo Network is currently in closed beta! The servers are only accessible to testers. To become a tester, + upgrade your PNID here +
+ + {{#if missingInLocale}} +

{{ localeHelper locale "docs.missingInLocale" }}

{{/if}} - {{{ content }}} -
-
+ {{{ content }}} +
+
+ + - diff --git a/views/docs/install.handlebars b/views/docs/install.handlebars new file mode 100644 index 0000000..81be478 --- /dev/null +++ b/views/docs/install.handlebars @@ -0,0 +1,72 @@ + + +
+ + + + + + + Pretendo + + + + + +
+ + {{> header}} +
+ + {{> docs-sidebar}} + +
+
+

Installation

+

+ Please choose your platform below. +

+ +
+
+
+ + + + + + + diff --git a/views/docs/search.handlebars b/views/docs/search.handlebars index 7184a73..339a4a2 100644 --- a/views/docs/search.handlebars +++ b/views/docs/search.handlebars @@ -2,7 +2,7 @@
- + - {{> header}} - - {{> docs-sidebar}} +
+ + {{> header}} +
-
-
-
-
-
+ {{> docs-sidebar}} + +
+ + + + + + + + + diff --git a/views/docs/welcome.handlebars b/views/docs/welcome.handlebars new file mode 100644 index 0000000..5424440 --- /dev/null +++ b/views/docs/welcome.handlebars @@ -0,0 +1,100 @@ + + +
+ + + + + + + Pretendo + + + + + +
+ + {{> header}} +
+ + {{> docs-sidebar}} + +
+
+

{{ localeHelper locale "docs.quickLinks.header" }}

+ + +

Welcome

+

Welcome to the official documentation for Pretendo Network. Here you'll be able to find installation instructions, error + codes, and more.

+

To begin, check out the quick links or take a look at the sidebar

+
+
+
+ + + + + + + \ No newline at end of file diff --git a/views/home.handlebars b/views/home.handlebars index 35085fb..e96c33d 100644 --- a/views/home.handlebars +++ b/views/home.handlebars @@ -5,15 +5,15 @@
-

{{ localeHelper locale "hero" "subtitle" }}

-

{{ localeHelper locale "hero" "title" }}

+

{{ localeHelper locale "hero.subtitle" }}

+

{{ localeHelper locale "hero.title" }}

- {{ localeHelper locale "hero" "text" }} + {{ localeHelper locale "hero.text" }}

@@ -37,7 +37,7 @@
- + @@ -75,7 +75,7 @@
-

{{ localeHelper locale "aboutUs" "title" }}

+

{{ localeHelper locale "aboutUs.title" }}

{{#each locale.aboutUs.paragraphs}}

{{ this }}

{{/each}} @@ -83,16 +83,16 @@

- {{ localeHelper locale "progress" "title" }} + {{ localeHelper locale "progress.title" }}

- {{> progress-list data=featuredFeatureList purple=true boards=boards }} + {{> progress-list data=featuredFeatureList purple=true }}
-

{{ localeHelper locale "faq" "title" }}

-

{{ localeHelper locale "faq" "text" }}

+

{{ localeHelper locale "faq.title" }}

+

{{ localeHelper locale "faq.text" }}

{{#doFaq locale.faq.QAs}} @@ -110,32 +110,32 @@
-

{{ localeHelper locale "showcase" "title" }}

-

{{ localeHelper locale "showcase" "text" }}

+

{{ localeHelper locale "showcase.title" }}

+

{{ localeHelper locale "showcase.text" }}

-

{{ localeHelper locale "showcase" "cards" 0 "title" }}

-

{{ localeHelper locale "showcase" "cards" 0 "caption" }}

+

{{ localeHelper locale "showcase.cards.0.title" }}

+

{{ localeHelper locale "showcase.cards.0.caption" }}

-

{{ localeHelper locale "showcase" "cards" 1 "title" }}

-

{{ localeHelper locale "showcase" "cards" 1 "caption" }}

+

{{ localeHelper locale "showcase.cards.1.title" }}

+

{{ localeHelper locale "showcase.cards.1.caption" }}

-

{{ localeHelper locale "showcase" "cards" 2 "title" }}

-

{{ localeHelper locale "showcase" "cards" 2 "caption" }}

+

{{ localeHelper locale "showcase.cards.2.title" }}

+

{{ localeHelper locale "showcase.cards.2.caption" }}

- +
-

{{ localeHelper locale "credits" "title" }}

-

{{ localeHelper locale "credits" "text" }}

+

{{ localeHelper locale "credits.title" }}

+

{{ localeHelper locale "credits.text" }}

{{#each locale.credits.people}} @@ -149,7 +149,7 @@ {{ name }} - +

{{ caption }}

@@ -160,8 +160,8 @@
-

{{ localeHelper locale "specialThanks" "title" }}

-

{{ localeHelper locale "specialThanks" "text" }}

+

{{ localeHelper locale "specialThanks.title" }}

+

{{ localeHelper locale "specialThanks.text" }}

@@ -198,16 +198,16 @@ {{> footer }} - -
\ No newline at end of file + +
diff --git a/views/layouts/blog-opengraph.handlebars b/views/layouts/blog-opengraph.handlebars index 4bc6cc0..79b7da2 100644 --- a/views/layouts/blog-opengraph.handlebars +++ b/views/layouts/blog-opengraph.handlebars @@ -7,14 +7,14 @@ - + - + @@ -23,7 +23,7 @@ - + @@ -31,14 +31,14 @@ - + - + @@ -70,7 +70,6 @@ - - \ No newline at end of file + diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index a7f3356..7d91692 100644 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -7,14 +7,14 @@ - + - + @@ -23,7 +23,7 @@ - + @@ -31,14 +31,14 @@ - + - + @@ -48,7 +48,8 @@ - + + @@ -67,8 +68,6 @@
- - - \ No newline at end of file + diff --git a/views/localization.handlebars b/views/localization.handlebars index 74f8c83..4db42b2 100644 --- a/views/localization.handlebars +++ b/views/localization.handlebars @@ -6,17 +6,17 @@
-

{{ localeHelper locale "localizationPage" "title" }}

-

{{ localeHelper locale "localizationPage" "description" }}

+

{{ localeHelper locale "localizationPage.title" }}

+

{{ localeHelper locale "localizationPage.description" }}

- - {{ localeHelper locale "localizationPage" "instructions" }} + + {{ localeHelper locale "localizationPage.instructions" }}
- +
- - + +
@@ -25,4 +25,4 @@ {{> footer }} - \ No newline at end of file + diff --git a/views/partials/footer.handlebars b/views/partials/footer.handlebars index 511c1c9..c9f3beb 100644 --- a/views/partials/footer.handlebars +++ b/views/partials/footer.handlebars @@ -1,3 +1,5 @@ + + \ No newline at end of file + + diff --git a/views/partials/header.handlebars b/views/partials/header.handlebars index 59f85b4..be2e392 100644 --- a/views/partials/header.handlebars +++ b/views/partials/header.handlebars @@ -1,3 +1,5 @@ + +
@@ -25,109 +27,154 @@ - -
-
-
- - +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+ + +
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
- - +
+
-
-
-
+ + {{#if isLoggedIn}} + + {{else}} +
+ +
+ {{/if}}
+ + diff --git a/views/partials/progress-list.handlebars b/views/partials/progress-list.handlebars index a6ab725..fdeb9f5 100644 --- a/views/partials/progress-list.handlebars +++ b/views/partials/progress-list.handlebars @@ -10,19 +10,15 @@
{{#if data.title}}

{{ data.title }}

- {{#if data.id}}{{#if (lookup boards data.id)}}{{#with (lookup boards data.id) as | board |}} - {{#each board.github_links}} - - {{/each}} - {{/with}}{{/if}}{{/if}} +
{{/if}}
- {{#each data.progress.completed}} + {{#each data.cards.done}}
{{/each}} - {{#each data.progress.started}} + {{#each data.cards.in_progress}}
@@ -43,7 +39,7 @@
{{/each}} - {{#each data.progress.not_started}} + {{#each data.cards.todo}}
{{ this }} @@ -51,4 +47,4 @@ {{/each}}
-
\ No newline at end of file +
diff --git a/views/progress.handlebars b/views/progress.handlebars index 0bbd7aa..2f0f574 100644 --- a/views/progress.handlebars +++ b/views/progress.handlebars @@ -1,3 +1,5 @@ + +
{{> header}} @@ -5,19 +7,48 @@
-

{{ localeHelper locale "progressPage" "title" }}

-

{{ localeHelper locale "progressPage" "description" }}

+

{{ localeHelper locale "progressPage.title" }}

+

{{ localeHelper locale "progressPage.description" }}

+
+

Donation goal

+
+
+
+

{{{ localeHelper locale "donation.progress" }}} {{{ localeHelper locale "donation.upgradePush" }}}

+
+ +
+

Quick Nav

+
    + {{#each progressLists.sections}} +
  • + {{this.title}} +
  • + {{/each}} +
+
+
{{#each progressLists.sections}} -
- {{> progress-list data=this boards=@root.boards }} +
+ {{> progress-list data=this }}
{{/each}}
{{> footer }} -
\ No newline at end of file +
+ +