diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8db8b1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +old +TODO 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/README.md b/README.md new file mode 100644 index 0000000..815ae93 --- /dev/null +++ b/README.md @@ -0,0 +1,135 @@ +# πclimbing +Open source climbing assessment tool build on top of Raspberry Pi ZeroW. + +Climbers/coaches/investigators could use this tool to measure and training. + +The tool has two interfaces with the real world: one linear encoder (to measure speed) and on load cell (to measure force). + +The linear encoder is used to measure speed while doing pull-ups. + +Load cell is used to measure strength in isometric exercises. + +TODO: where to download and try. Explain how to use the "Simulation" + +TODO: gif with a small demo + +TODO: video with the real usage + +TODO: photo of the raspi + input devices + +## Hardware +The hardware needed to build this tools is: + * [Raspberry Pi ZeroW](https://www.raspberrypi.org/products/raspberry-pi-zero-w/) + * Braincoder (DIY linear encoder) + * KY-040 Rotary Encoder + * S Type Load Cell, 300kg + * HX711 analog-to-digital converter + +Network schema: TODO + +### Raspberry Pi ZeroW +Small computer which could run Linux and have WiFi integrated. + +It is used to connect the input devices and run the app that reads from those devices. It also serves the web page used by users. + +### S Type Load Cell +This element will be placed between the anchor and our hangboard (or the hold we use) to measure the force. + +I bought [this one](https://www.amazon.fr/dp/B077YFF6VQ/ref=pe_3044141_189395771_TE_dp_1) in Amazon. + +I guess any brand selling PSD-S1 will work. + +I chose 300kg because 100kg is not enough and 2000kg will have a bigger error. + +### HX711 +This ADC converter looks like is the standar to connect load cells to digital inputs. The signal in the load cell is too small to be readed directly with the Raspberry. + +The board should allow a change in the sampling rate (pin RATE, check the [datasheet](https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf)), to allow 80 samplings per second (80 SPS). + +[This one](https://www.sparkfun.com/products/13879) allows it. + +I bought [this one](https://www.ebay.es/itm/HX711-Board-Chip-Waage-Gewichts-sensor-Scale-Modul-Arduino-Raspberry-Pi-Gewicht-/252712602933), but I have to modify the board slightly: +![hx711 hack](images/hx711_fix.png) + +Connection to the PiZeroW +``` +3v3 - Vcc +GPIO17 - DT +GPIO27 - SCK +``` + +Connection to the load cell: +``` +Red - E+ +Black - E- +White - A- +Green - A+ +``` + +### Linear encoder +To build a linear encoder with the rotary encoder KY-040 you could follow the instructions of the [Braincoder](https://www.youtube.com/watch?v=UmpN9vo_ixU). + +The pdf with the instructions (in spanish) the the 3d models are in ``hardware/linear_encoder`` + + +## Software + +### Raspberry PiZeroW +Raspbian (Debian linux version for Raspberry) should be installed into the PiZeroW and configured to use the input devices. + +To read data from the load cell we use the [hx711 linux driver](https://github.com/raspberrypi/linux/blob/rpi-4.19.y/drivers/iio/adc/hx711.c). + +The kernel should be compiled with this new module to be available. It have been slightly modified to have a fastest sampling. + +See ``raspbian/kernel_1.20200205-1__4.19.97`` + +To load the KY-040 should be added to the [Device Tree](https://www.raspberrypi.org/documentation/configuration/device-tree.md), adding to ``/boot/config.txt``: +``` +# (replacing {CLK_PIN} and {DT_PIN} by their real values) +dtoverlay=rotary-encoder,pin_a={CLK_PIN},pin_b={DT_PIN},relative_axis=1,steps-per-period=2 +``` + +TODO: + * how to install raspbian with the modified hx711 module and configure the Device Tree for hx711 and KY-040 (/home/adrian/Documentos/raspberry/leeme.txt) + * how to configure WiFi + * how to install the backend+frontend + +### Backend +The purpouse of the backend is to read from the input devices and present the data with a GraphQL API. + +This tool is built using Go. + +Code in ``app/``. + +It is available to be downloaded in the releases page. + +TODO: diagram of the building blocks + +### Frontend +Consumes data from the GraphQL API and present the values and graphs to the user. + +Built with [Gatsby](https://www.gatsbyjs.org/), [ReactJS](http://reactjs.org/) and [Elastic UI](https://elastic.github.io/eui/#/) + +Code in ``app/frontend``. + +It is built as a static page and inserted into the backend Go app. + +TODO: add some screenshots + +## Develop +### Backend +I normally develop in my amd64/linux simulating data using ``app/simulator/encoder_simulator.py`` and ``app/simulator/load_cell_simulator.py`` + +I have to use a fork of gqlgen because of https://github.com/99designs/gqlgen/issues/1179 + +``` +cd app +bra run +``` + +### Frontend +``` +cd app/frontend +yarn +gatsby develop +``` diff --git a/app/.bra.toml b/app/.bra.toml new file mode 100755 index 0000000..72b22ab --- /dev/null +++ b/app/.bra.toml @@ -0,0 +1,25 @@ +[run] +init_cmds = [ # Commands run in start + ["go", "install"], + ["go", "build", "-o", "piclimbing"], + ["./piclimbing", "-strength-device", "simulator/load_cell.device", "-encoder-device", "/dev/input/event21", "-v", "3", "-strength-gather-time", "20"] +] +cmds = [ # Commands to run + ["go", "install"], + ["go", "build", "-o", "piclimbing"], + ["./piclimbing", "-strength-device", "simulator/load_cell.device", "-encoder-device", "/dev/input/event21", "-v", "3", "-strength-gather-time", "20"] +] +watch_all = true # Watch all sub-directories +watch_dirs = ["graph", "speed", "strength"] # Directories to watch +watch_exts = [".go"] # Extensions to watch +env_files = [] # Load env vars from files +ignore = [".git", "node_modules"] # Directories to exclude from watching +ignore_files = [] # Regexps for ignoring specific notifies +follow_symlinks = false # Enable/disable following symbolic links of sub directories +build_delay = 120 # Minimal interval to Trigger build event +interrupt_timout = 15 # Time to wait until force kill +graceful_kill = false # Wait for exit and before directly kill + +[sync] +listen_addr = ":5050" +remote_addr = ":5050" diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..3f72a16 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,6 @@ +__pycache__ +pkged.go +piclimbing +TODO +piclimbing.exe +piclimbing.arm6 diff --git a/app/Makefile b/app/Makefile new file mode 100644 index 0000000..792e20b --- /dev/null +++ b/app/Makefile @@ -0,0 +1,23 @@ +NAME=piclimbing + +# TODO build frontend before pkger +all: frontend pkger build_rpizero build_amd64 build_windows_amd64 + +# Insert the frontend code in pkged.go +pkger: + pkger + +build_rpizero: + CC=arm-linux-gnueabihf-gcc CGO_ENABLED=1 GOARCH=arm GOARM=6 go build -o ${NAME}.arm6 . + +build_amd64: + go build -o ${NAME} . + +build_windows_amd64: + GOOS=windows GOARCH=amd64 go build -o ${NAME}.exe + +.PHONY: all build_amd64 build_rpizero build_windows_amd64 pkger + + +# vim:ft=make +# diff --git a/app/README.md b/app/README.md new file mode 100644 index 0000000..d825cf1 --- /dev/null +++ b/app/README.md @@ -0,0 +1,103 @@ +## Climbing documentation + +DSI? +https://backinsta.com/media/2297421343178551473_2208980241/B_iFIoTjvCx +DSI + fuerza max en 250ms vs en 3s? +dynamic strength index + + + +### MVC +[Differences in Climbing-Specific Strength Between Boulder and Lead Rock Climbers](https://journals.lww.com/nsca-jscr/Fulltext/2013/02000/Differences_in_Climbing_Specific_Strength_Between.5.aspx) + +Dominant arm. Hold dimension not specified. + +#### Crimp + +Boulder (7b-8a): 9-11 N/kg + +Lead (7c+-8c): 8-9 N/kg + +#### Open crimp + +Boulder (7b-8a): 8-9 N/kg + +Lead (7c+-8c): 7.5-8.5 N/kg + + +### RFD +[Differences in Climbing-Specific Strength Between Boulder and Lead Rock Climbers](https://journals.lww.com/nsca-jscr/Fulltext/2013/02000/Differences_in_Climbing_Specific_Strength_Between.5.aspx) + +Dominant arm. Hold dimension not specified. + +#### Crimp + +Boulder (7b-8a): 45-65 N/s/kg + +Lead (7c+-8c): 32-48 N/s/kg + +#### Open crimp + +Boulder (7b-8a): 50-65 N/s/kg + +Lead (7c+-8c): 35-52 N/s/kg + + + +## Raspberry Pi Zero W +TODO driver y kernel para el hx711 +Mirar si con el driver normal y subiendo el nivel de verbose va rápido + +### KY040 / rotatory encoder +Pin CLK and DT to +TODO + +### HX711 / Load cell +https://journals.lww.com/nsca-jscr/Fulltext/2013/02000/Differences_in_Climbing_Specific_Strength_Between.5.aspx +In this study the sampling rate was 1kHz (1ms) + +TODO: How to measure faster from the cell load? + + +### Config +``/boot/config.txt`` + +``` +[all] +dtoverlay=rotary-encoder,pin_a=4,pin_b=22,relative_axis=1,steps-per-period=2 +dtoverlay=hx711 +``` + +## Databases + +### Influxdb +Too resource intensive for raspi zero + +### VictoriaMetrics +With function "keep_last_value" to fill the nulls and scrapping 25ms + +## Troubleshooting +Reading jumping forward/backwards: check the connections, maybe a loosing cable (seen with Vcc being loose) + + +## Development + +Run database and visualizer: +TODO: como cargar los dashboards en el arranque y el datasource +``` +docker run --name victoria-climb --rm -d -p 8089:8089/udp victoriametrics/victoria-metrics -influxListenAddr 0.0.0.0:8089 +docker run --name grafana-climb --link victoria-climb:victoria --rm -d -p 3000:3000 grafana/grafana +``` + +Access grafana: http://localhost:3000 +User: admin +Pass: admin + +New datasource, Prometheus: http://victoria:8428 +Scrape interval: 25ms + + +gqlgen server, hack to avoid reconnection from apollo client +https://github.com/99designs/gqlgen/issues/1179 +Removed that line diff --git a/app/frontend/.babelrc b/app/frontend/.babelrc new file mode 100644 index 0000000..3030e8f --- /dev/null +++ b/app/frontend/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + "@babel/env", + "@babel/typescript", + "@babel/react" + ], + "plugins": [ + "@babel/proposal-class-properties", + "@babel/proposal-object-rest-spread", + "@babel/plugin-syntax-dynamic-import" + ] +} \ No newline at end of file diff --git a/app/frontend/.eslintrc b/app/frontend/.eslintrc new file mode 100644 index 0000000..8b1ce6c --- /dev/null +++ b/app/frontend/.eslintrc @@ -0,0 +1,73 @@ +{ + "parser": "@typescript-eslint/parser", + "extends": [ + "@elastic/eslint-config-kibana", + "plugin:@typescript-eslint/recommended", + "prettier/react", + "prettier/standard", + "plugin:prettier/recommended" + ], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + } + }, + "settings": { + "import/resolver": { + "node": { + "extensions": [".ts", ".tsx", ".js", ".json"] + } + }, + "react": { + "version": "detect" + } + }, + "plugins": [ + "jsx-a11y", + "json", + "prettier" + ], + "rules": { + "prefer-template": "error", + "no-use-before-define": "off", + "quotes": ["warn", "single", "avoid-escape"], + "@typescript-eslint/ban-ts-ignore": "off", + "@typescript-eslint/camelcase": "off", + "@typescript-eslint/class-name-casing": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-member-accessibility": "off", + "@typescript-eslint/indent": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-parameter-properties": "off", + "@typescript-eslint/no-triple-slash-reference": "off", + "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_", "ignoreRestSiblings": true }], + "@typescript-eslint/no-use-before-define": "off", + "jsx-a11y/accessible-emoji": "error", + "jsx-a11y/alt-text": "error", + "jsx-a11y/anchor-has-content": "error", + "jsx-a11y/aria-activedescendant-has-tabindex": "error", + "jsx-a11y/aria-props": "error", + "jsx-a11y/aria-proptypes": "error", + "jsx-a11y/aria-role": "error", + "jsx-a11y/aria-unsupported-elements": "error", + "jsx-a11y/heading-has-content": "error", + "jsx-a11y/html-has-lang": "error", + "jsx-a11y/iframe-has-title": "error", + "jsx-a11y/interactive-supports-focus": "error", + "jsx-a11y/media-has-caption": "error", + "jsx-a11y/mouse-events-have-key-events": "error", + "jsx-a11y/no-access-key": "error", + "jsx-a11y/no-distracting-elements": "error", + "jsx-a11y/no-interactive-element-to-noninteractive-role": "error", + "jsx-a11y/no-noninteractive-element-interactions": "error", + "jsx-a11y/no-noninteractive-element-to-interactive-role": "error", + "jsx-a11y/no-redundant-roles": "error", + "jsx-a11y/role-has-required-aria-props": "error", + "jsx-a11y/role-supports-aria-props": "error", + "jsx-a11y/scope": "error", + "jsx-a11y/tabindex-no-positive": "error", + "jsx-a11y/label-has-associated-control": "error" + } +} diff --git a/app/frontend/.gitignore b/app/frontend/.gitignore new file mode 100644 index 0000000..d8f6207 --- /dev/null +++ b/app/frontend/.gitignore @@ -0,0 +1,72 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# dotenv environment variables file +.env + +# gatsby files +.cache/ +public + +# Mac files +.DS_Store + +# Yarn +yarn-error.log +.pnp/ +.pnp.js +# Yarn Integrity file +.yarn-integrity + +# Build files +lib/ \ No newline at end of file diff --git a/app/frontend/.huskyrc b/app/frontend/.huskyrc new file mode 100644 index 0000000..e173eb4 --- /dev/null +++ b/app/frontend/.huskyrc @@ -0,0 +1,5 @@ +{ + "hooks": { + "pre-commit": ["yarn type-check && lint-staged"] + } +} diff --git a/app/frontend/.lintstagedrc b/app/frontend/.lintstagedrc new file mode 100644 index 0000000..90be17b --- /dev/null +++ b/app/frontend/.lintstagedrc @@ -0,0 +1,4 @@ +{ + "*.{js,jsx,ts,tsx}": ["yarn lint:fix", "git add"], + "{*.{json,md}}": ["prettier --write", "git add"] +} diff --git a/app/frontend/.prettierrc b/app/frontend/.prettierrc new file mode 100644 index 0000000..17c173a --- /dev/null +++ b/app/frontend/.prettierrc @@ -0,0 +1,9 @@ +{ + "jsxBracketSameLine": true, + "jsxSingleQuote": false, + "parser": "typescript", + "printWidth": 80, + "semi": true, + "singleQuote": true, + "trailingComma": "es5" +} diff --git a/app/frontend/Makefile b/app/frontend/Makefile new file mode 100644 index 0000000..0f5167b --- /dev/null +++ b/app/frontend/Makefile @@ -0,0 +1,12 @@ +all: clean build + +clean: + gatsby build + +build: + gatsby build + +.PHONY: all clean build + +# vim:ft=make +# diff --git a/app/frontend/README.md b/app/frontend/README.md new file mode 100644 index 0000000..cf50870 --- /dev/null +++ b/app/frontend/README.md @@ -0,0 +1,8 @@ +# PIclimbing frontend + +Build on top of [gatsby-eui-starter](https://github.com/elastic/gatsby-eui-starter) and ReactJS. + +To build the app, the pond.js lib has to be patched: +``` +pond.js.patch +``` diff --git a/app/frontend/gatsby-browser.js b/app/frontend/gatsby-browser.js new file mode 100644 index 0000000..9a34e35 --- /dev/null +++ b/app/frontend/gatsby-browser.js @@ -0,0 +1,6 @@ +import React from 'react'; +import Chrome from './src/components/chrome/chrome'; + +export const wrapRootElement = ({ element }) => { + return {element}; +}; diff --git a/app/frontend/gatsby-config.js b/app/frontend/gatsby-config.js new file mode 100644 index 0000000..bdd2f68 --- /dev/null +++ b/app/frontend/gatsby-config.js @@ -0,0 +1,38 @@ +module.exports = { + pathPrefix: '/piclimbing', + siteMetadata: { + title: 'PIclimbing', + description: + 'Climbing assessment tool', + author: '@adrianlzt', + }, + plugins: [ + 'gatsby-plugin-react-helmet', + { + resolve: 'gatsby-source-filesystem', + options: { + name: 'images', + path: `${__dirname}/src/images`, + }, + }, + 'gatsby-transformer-sharp', + 'gatsby-plugin-sharp', + 'gatsby-plugin-sass', + 'gatsby-plugin-typescript', + { + resolve: 'gatsby-plugin-manifest', + options: { + name: 'gatsby-eui-starter', + short_name: 'starter', + start_url: '/', + background_color: '#F5F7FA', + theme_color: '#006BB4', + display: 'minimal-ui', + icon: 'src/images/logo.svg', // This path is relative to the root of the site. + }, + }, + // this (optional) plugin enables Progressive Web App + Offline functionality + // To learn more, visit: https://gatsby.dev/offline + // `gatsby-plugin-offline`, + ], +}; diff --git a/app/frontend/gatsby-node.js b/app/frontend/gatsby-node.js new file mode 100644 index 0000000..0f52c1c --- /dev/null +++ b/app/frontend/gatsby-node.js @@ -0,0 +1,62 @@ +/** + * Implement Gatsby's Node APIs in this file. + * + * See: https://www.gatsbyjs.org/docs/node-apis/ + */ + +exports.onCreateWebpackConfig = ({ stage, loaders, plugins, actions }) => { + if (stage === 'build-html') { + actions.setWebpackConfig({ + module: { + rules: [ + // TODO this should be commented to run the develop mode + { + test: /react-ace/, + use: loaders.null(), + }, + /* TODO if this two are commented, the graphs do not work in build + { + test: /immutable-devtools/, + use: loaders.null(), + }, + { + test: /pondjs/, + use: loaders.null(), + }, + { + test: /react-timeseries-charts/, + use: loaders.null(), + }, + */ + ], + }, + plugins: [ + plugins.define({ + HTMLElement: {}, + window: {}, + }), + ], + }); + } +}; + +// TODO gatbsy build does not know this api +/* +exports.modifyBabelrc = ({ babelrc }) => ({ + ...babelrc, + plugins: babelrc.plugins.concat(['transform-regenerator']), +}); +*/ + +/* +exports.modifyWebpackConfig = function(config, env) { + if (env === 'build-javascript' || env === 'develop') { + const previous = config.resolve().entry; + config._config.entry = []; + config.merge({ + entry: ['babel-polyfill'].concat(previous), + }); + } + return config; +}; +*/ diff --git a/app/frontend/gatsby-ssr.js b/app/frontend/gatsby-ssr.js new file mode 100644 index 0000000..561a72b --- /dev/null +++ b/app/frontend/gatsby-ssr.js @@ -0,0 +1,7 @@ +import React from 'react'; +import Chrome from './src/components/chrome/chrome'; + +// TODO needde to make the build, but should be commented to use the develop mode +export const wrapRootElement = ({ element }) => { + return {element}; +}; diff --git a/app/frontend/package.json b/app/frontend/package.json new file mode 100644 index 0000000..69e8105 --- /dev/null +++ b/app/frontend/package.json @@ -0,0 +1,124 @@ +{ + "name": "gatsby-eui-starter", + "private": true, + "description": "Start building Kibana protoypes quickly with the Gatsby EUI Starter", + "version": "1.0.0", + "author": "Davey Holler ", + "dependencies": { + "@apollo/react-hooks": "^3.1.5", + "@axetroy/react-download": "^1.1.1", + "@elastic/app-search-javascript": "^7.3.0", + "@elastic/app-search-node": "^7.3.0", + "@elastic/charts": "^19.1.1", + "@elastic/datemath": "^5.0.2", + "@elastic/eslint-config-kibana": "^0.15.0", + "@elastic/eui": "^21.1.0", + "@loadable/component": "^5.12.0", + "@lourd/react-google-api": "^0.2.1", + "@nivo/line": "^0.61.1", + "@reach/router": "^1.3.3", + "@types/enzyme": "^3.10.3", + "apollo-boost": "^0.4.7", + "apollo-cache": "^1.3.4", + "apollo-client": "^2.6.8", + "apollo-link": "^1.2.14", + "apollo-link-ws": "^1.0.20", + "babel-plugin-remove-graphql-queries": "^2.9.0", + "babel-polyfill": "^6.26.0", + "enzyme": "^3.10.0", + "eslint-plugin-json": "^1.4.0", + "gapi-react-component": "^1.0.2", + "gapi-script": "^1.0.2", + "gatsby": "^2.19.10", + "gatsby-cli": "^2.12.21", + "gatsby-image": "^2.1.0", + "gatsby-plugin-manifest": "^2.2.40", + "gatsby-plugin-offline": "^2.1.1", + "gatsby-plugin-react-helmet": "^3.0.12", + "gatsby-plugin-sass": "^2.0.11", + "gatsby-plugin-sharp": "^2.0.37", + "gatsby-plugin-typescript": "^2.0.14", + "gatsby-source-filesystem": "^2.0.37", + "gatsby-transformer-sharp": "^2.1.19", + "gh-pages": "^2.0.1", + "graphql": "^15.0.0", + "graphql-tag": "^2.10.3", + "immutable": "^4.0.0-rc.12", + "isomorphic-fetch": "^2.2.1", + "lodash.throttle": "^4.1.1", + "moment": "^2.24.0", + "moment-timezone": "^0.5.27", + "node-sass": "^4.12.0", + "pondjs": "^0.9.0", + "prop-types": "^15.7.2", + "react": "^16.12.0", + "react-apollo": "^3.1.5", + "react-dom": "^16.12.0", + "react-google-login": "^5.1.14", + "react-helmet": "^5.2.1", + "react-redux": "^7.2.0", + "react-timeseries-charts": "^0.16.1", + "subscriptions-transport-ws": "^0.9.16", + "ws": "^7.3.0" + }, + "devDependencies": { + "@babel/cli": "^7.6.2", + "@babel/core": "^7.6.2", + "@babel/plugin-proposal-class-properties": "^7.4.0", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/preset-env": "^7.6.2", + "@babel/preset-react": "^7.8.3", + "@babel/preset-typescript": "^7.6.0", + "@types/node": "^12.7.7", + "@types/react": "^16.9.23", + "@types/react-dom": "^16.9.5", + "@types/react-virtualized": "^9.21.2", + "@typescript-eslint/eslint-plugin": "^2.0.0", + "@typescript-eslint/parser": "^2.0.0", + "eslint": "^6.2.2", + "eslint-config-prettier": "^6.1.0", + "eslint-loader": "^3.0.0", + "eslint-plugin-babel": "^5.3.0", + "eslint-plugin-emotion": "^10.0.14", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-mocha": "^6.1.0", + "eslint-plugin-prefer-object-spread": "^1.2.1", + "eslint-plugin-prettier": "^3.1.0", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^2.0.1", + "husky": "^3.0.4", + "lint-staged": "^9.2.4", + "prettier": "^1.18.2", + "typescript": "^3.5.3" + }, + "keywords": [ + "gatsby", + "kibana", + "eui", + "elastic" + ], + "license": "Apache-2.0", + "scripts": { + "type-check": "tsc --noEmit", + "type-check:watch": "yarn run type-check -- --watch", + "build": "yarn run build:types && gatsby build", + "build:types": "tsc", + "develop": "GATSBY_GRAPHQL_IDE=playground gatsby develop", + "format": "prettier --write \"**/*.{js,jsx,json,md,ts,tsx}\"", + "start": "yarn run develop", + "serve": "gatsby serve", + "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\"", + "deploy": "gatsby build --prefix-paths && gh-pages -d public", + "lint": "eslint --ignore-path .gitignore . --ext ts --ext tsx --ext js --ext jsx", + "lint:fix": "yarn lint --fix" + }, + "repository": { + "type": "git", + "url": "https://github.com/elastic/gatsby-eui-starter" + }, + "bugs": { + "url": "https://github.com/elastic/gatsby-eui-starter/issues" + } +} diff --git a/app/frontend/pond.js.patch b/app/frontend/pond.js.patch new file mode 100644 index 0000000..b946723 --- /dev/null +++ b/app/frontend/pond.js.patch @@ -0,0 +1,12 @@ +--- node_modules/pondjs/lib/entry.js.orig 2020-05-17 22:36:46.567022822 +0200 ++++ node_modules/pondjs/lib/entry.js 2020-05-17 22:37:17.744041247 +0200 +@@ -209,9 +209,3 @@ + */ + // Chrome debugging for immutable.js structures + var Immutable = require("immutable"); +- +-var installDevTools = require("immutable-devtools"); +- +-if (typeof window !== "undefined") { +- installDevTools(Immutable); +-} // Structures diff --git a/app/frontend/src/components/_index.scss b/app/frontend/src/components/_index.scss new file mode 100644 index 0000000..101244f --- /dev/null +++ b/app/frontend/src/components/_index.scss @@ -0,0 +1 @@ +@import './chrome/index'; \ No newline at end of file diff --git a/app/frontend/src/components/chrome/_chrome.scss b/app/frontend/src/components/chrome/_chrome.scss new file mode 100644 index 0000000..fcbddea --- /dev/null +++ b/app/frontend/src/components/chrome/_chrome.scss @@ -0,0 +1,21 @@ +.chrWrap { + width: calc(100% - 3rem); + margin-left: 3rem; + padding-top: $euiSizeXXL + $euiSizeS; +} + +.chrHeader { + position: fixed; + top: 0; + left: 0; + right: 0; +} + +.chrHeader__themeSection { + display: flex; + align-items: center; + width: $euiSize * 11; + justify-content: center; + padding-left: $euiSizeXS; + padding-right: $euiSizeXS; +} diff --git a/app/frontend/src/components/chrome/_index.scss b/app/frontend/src/components/chrome/_index.scss new file mode 100644 index 0000000..a8fcbb9 --- /dev/null +++ b/app/frontend/src/components/chrome/_index.scss @@ -0,0 +1 @@ +@import 'chrome'; \ No newline at end of file diff --git a/app/frontend/src/components/chrome/chrome.tsx b/app/frontend/src/components/chrome/chrome.tsx new file mode 100644 index 0000000..124046e --- /dev/null +++ b/app/frontend/src/components/chrome/chrome.tsx @@ -0,0 +1,166 @@ +import React, { Children, isValidElement, cloneElement } from 'react'; +import throttle from 'lodash.throttle'; + +import { ApolloProvider } from 'react-apollo'; +import { Provider } from 'react-redux'; +import createStore from '../../state/createStore'; + +import { + EuiButton, + // @ts-ignore + EuiHeader, + // @ts-ignore + EuiHeaderSection, + // @ts-ignore + EuiHeaderSectionItem, + // @ts-ignore + EuiHeaderSectionItemButton, + // @ts-ignore + EuiListGroupItem, + EuiHeaderLogo, + EuiIcon, + // @ts-ignore + EuiNavDrawerGroup, + // @ts-ignore + EuiNavDrawer, +} from '@elastic/eui'; + +import { Link } from '@reach/router'; +import { GoogleApi } from '@lourd/react-google-api'; +import { GoogleClientId, GoogleApiKey, } from '../../settings'; +import 'regenerator-runtime/runtime'; +import { loadState, saveState } from '../../state/localStorage'; +import { client } from './client' +require('../../themes/theme_light.scss'); + +export default class Chrome extends React.Component { + navDrawerRef: any; + persistedState = loadState(); + store = createStore(this.persistedState); + + componentDidMount() { + this.store.subscribe( + throttle(() => { + saveState(this.store.getState()); + }, 1000) + ); + } + + constructor(props: any) { + super(props); + this.state = {}; + } + + renderLogo() { + return ( + + + + ); + } + + renderMenuTrigger() { + return ( + this.navDrawerRef.toggleOpen()}> + + + ); + } + + setNavDrawerRef = (ref: any) => (this.navDrawerRef = ref); + + // TODO move the export button to the app bar? + // Use context to "send" values from the child to here to generate the file? + // TODO logout button not working + render() { + return ( + + + + {({ authorize, loading: apiLoading, signout, signedIn, error }) => ( +
+ + + + {this.renderLogo()} + + + + + + {apiLoading ? ( + + loading... + + ) : error ? ( +
{JSON.stringify(error, null, 2)}
+ ) : signedIn ? ( + + LogOut + + ) : ( + + Authorize + + )} +
+
+
+ + + + + + + + + + + + + +
{this.props.children}
+
+ )} +
+
+
+ ); + } +} diff --git a/app/frontend/src/components/chrome/client.tsx b/app/frontend/src/components/chrome/client.tsx new file mode 100644 index 0000000..591f233 --- /dev/null +++ b/app/frontend/src/components/chrome/client.tsx @@ -0,0 +1,44 @@ +import { split } from 'apollo-link'; +import { HttpLink } from 'apollo-link-http'; +import { WebSocketLink } from 'apollo-link-ws'; +import { getMainDefinition } from 'apollo-utilities'; +import { InMemoryCache } from 'apollo-cache-inmemory'; +import { HTTPServer, WSServer } from '../../settings'; +import { ApolloClient } from 'apollo-client'; +import fetch from 'isomorphic-fetch'; + +const wsLink = process.browser + ? new WebSocketLink({ + // if you instantiate in the server, the error will be thrown + uri: WSServer, + options: { + reconnect: true, + }, + }) + : null; + +const httplink = new HttpLink({ + uri: HTTPServer, + fetch, + credentials: 'same-origin', +}); + +const link = process.browser + ? split( + //only create the split in the browser + // split based on operation type + ({ query }) => { + const { kind, operation } = getMainDefinition(query); + return kind === 'OperationDefinition' && operation === 'subscription'; + }, + wsLink, + httplink + ) + : httplink; + +const client = new ApolloClient({ + link: link, + cache: new InMemoryCache(), +}); + +export { client }; diff --git a/app/frontend/src/components/data_card.tsx b/app/frontend/src/components/data_card.tsx new file mode 100644 index 0000000..915ef0d --- /dev/null +++ b/app/frontend/src/components/data_card.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { EuiText, EuiCard, EuiFlexItem, EuiToolTip } from '@elastic/eui'; + +const cardStyle = { minWidth: 200 }; + +const Card = ({ title, description, value, critical, ok }) => { + let backgroundColor = '#fbfcfd'; + if (critical) { + backgroundColor = 'rgba(189, 39, 30, 0.6);'; // red + } else if (ok) { + backgroundColor = 'rgba(116, 202, 52, 0.67)'; // green + } + + return ( + + + + +

{value}

+
+
+
+
+ ); +}; + +export default Card; diff --git a/app/frontend/src/components/google/GoogleSheet.tsx b/app/frontend/src/components/google/GoogleSheet.tsx new file mode 100644 index 0000000..7b04ebb --- /dev/null +++ b/app/frontend/src/components/google/GoogleSheet.tsx @@ -0,0 +1,129 @@ +import React, { useState } from 'react'; +import { EuiButtonEmpty } from '@elastic/eui'; +import { GoogleApiConsumer } from '@lourd/react-google-api'; +import { AppName } from '../../settings' + +// Example values, for headers and values +// ['time', 'num_pullups', 'speed', 'max_speed']; +// ["31/12/2020 20:00:00", "2.33", "=1+1+1", "4"] +const GoogleSheetInsertData = ({ api, sheet, headers, values }) => { + const [lastValues, setLastValues] = useState([]); + const [exported, setExported] = useState(false); + + const file_name = `${AppName} climbing` + + if (!api.client || !api.signedIn) { + return ( + + Export sheet + + ); + } + + async function insertData() { + const request = { + properties: { + title: file_name, + locale: 'en_GB', // To use dot format for numbers and DD/MM/YYYY for dates + }, + sheets: [ + { + properties: { + title: 'Strength', + }, + }, + { + properties: { + title: 'Speed', + }, + }, + ] + }; + + // Enough range for any headers + const headers_range = `${sheet}!A1:Z1`; + + // Look for an already created file + const files = await api.client.drive.files.list({ + q: `name='${file_name}' and trashed = false`, + orderBy: 'modifiedTime', + }); + + // Get the file id, from the search or create one + let file_id = 0; + if (files.result.files.length > 0) { + file_id = files.result.files[0].id; + //const file = await api.client.sheets.spreadsheets.get({spreadsheetId: file_id}) + } else { + // TODO show a message to the user with the link of the created file + // https://elastic.github.io/eui/#/display/toast + const file = await api.client.sheets.spreadsheets.create(request); + file_id = file.result.spreadsheetId; + } + + // Check if the sheet have the headers + const header = await api.client.sheets.spreadsheets.values.get({ + spreadsheetId: file_id, + range: headers_range, + }); + + // Add headers if we don't have data in the sheet + if (!header.result.values) { + await api.client.sheets.spreadsheets.values.append({ + spreadsheetId: file_id, + range: headers_range, + valueInputOption: 'USER_ENTERED', + insertDataOption: 'INSERT_ROWS', + resource: { + values: [headers], + }, + }); + } + + // Append values + await api.client.sheets.spreadsheets.values.append({ + spreadsheetId: file_id, + range: headers_range, + valueInputOption: 'USER_ENTERED', + insertDataOption: 'INSERT_ROWS', + resource: { + values: [values], + }, + }); + + setExported(true); + setLastValues(values); + } + + const newValues = values !== lastValues; + + // TODO don't rerender the icon, useMemo + const ExportButton = () => { + if (newValues && !exported) { + return ( + + Export sheet + + ); + } + + return ( + + Exported + + ); + }; + + // TODO: handle errors, return error if has one + return ; +}; + +const GoogleSheet = props => { + return ( + + {api => } + + ); +}; + +export default GoogleSheet; diff --git a/app/frontend/src/components/image.js b/app/frontend/src/components/image.js new file mode 100644 index 0000000..f6de979 --- /dev/null +++ b/app/frontend/src/components/image.js @@ -0,0 +1,32 @@ +import React from 'react'; +import { StaticQuery, graphql } from 'gatsby'; +import Img from 'gatsby-image'; + +/* + * This component is built using `gatsby-image` to automatically serve optimized + * images with lazy loading and reduced file sizes. The image is loaded using a + * `StaticQuery`, which allows us to load the image from directly within this + * component, rather than having to pass the image data down from pages. + * + * For more information, see the docs: + * - `gatsby-image`: https://gatsby.dev/gatsby-image + * - `StaticQuery`: https://gatsby.dev/staticquery + */ + +const Image = () => ( + } + /> +); +export default Image; diff --git a/app/frontend/src/components/navigation_links/pin_extra_action.ts b/app/frontend/src/components/navigation_links/pin_extra_action.ts new file mode 100644 index 0000000..4c840cc --- /dev/null +++ b/app/frontend/src/components/navigation_links/pin_extra_action.ts @@ -0,0 +1,6 @@ +export const pinExtraAction = { + color: 'subdued', + iconType: 'pin', + iconSize: 's', + 'aria-label': 'Pin to top', +}; diff --git a/app/frontend/src/components/speed/coach_command.tsx b/app/frontend/src/components/speed/coach_command.tsx new file mode 100644 index 0000000..5910c3e --- /dev/null +++ b/app/frontend/src/components/speed/coach_command.tsx @@ -0,0 +1,187 @@ +import React, { useState, useEffect } from 'react'; +import { EuiText, EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { useMutation, useSubscription } from '@apollo/react-hooks'; +import gql from 'graphql-tag'; +import { setTimeout } from 'timers'; + +const CoachCmd = ({ climberStatus, setClimberStatus }) => { + // TODO parametrize calibrate command. One command for both mutations + // Allow to define the step of the calibration + // TODO not tested for speed + const CALIBRATE_LESS_CMD = gql` + mutation { + speedCommand(params: { command: CALIBRATE, value: -1 }) { + message + } + } + `; + + const CALIBRATE_PLUS_CMD = gql` + mutation { + speedCommand(params: { command: CALIBRATE, value: 1 }) { + message + } + } + `; + + const RESET_CMD = gql` + mutation { + speedCommand(params: { command: RESET }) { + message + } + } + `; + + const PAUSE_CMD = gql` + mutation { + speedCommand(params: { command: PAUSE }) { + message + } + } + `; + + const RESTART_CMD = gql` + mutation { + speedCommand(params: { command: RESTART }) { + message + } + } + `; + + const SIMULATE_CMD = gql` + mutation { + speedCommand(params: { command: SIMULATE }) { + message + } + } + `; + + const SPEED_BACKEND_COMMANDS_SUBSCRIPTION = gql` + subscription { + speedBackendCommands { + command + value + } + } + `; + + const [restartButton, {}] = useMutation(RESTART_CMD); + const [pauseButton, {}] = useMutation(PAUSE_CMD); + const [resetButton, {}] = useMutation(RESET_CMD); + const [simulateButton, {}] = useMutation(SIMULATE_CMD); + const [calibratePlusButton, {}] = useMutation(CALIBRATE_PLUS_CMD); + const [calibrateLessButton, {}] = useMutation(CALIBRATE_LESS_CMD); + const [lastStop, setLastStop] = useState(0); + const [startButton, setStartButton] = useState('Start'); + + // Give 5" to get ready + // Start capturing data one sec before, to avoid loosing first measures + function start() { + setStartButton('Start ... 5'); + setTimeout(() => { + setStartButton('Start ... 4'); + }, 1000); + setTimeout(() => { + setStartButton('Start ... 3'); + }, 2000); + setTimeout(() => { + setStartButton('Start ... 2'); + }, 3000); + setTimeout(() => { + setStartButton('Start ... 1'); + restartButton(); + console.log('coach cmd activar climber'); + setClimberStatus(true); + }, 4000); + setTimeout(() => { + setStartButton('Go!'); + }, 5000); + } + + function pause() { + // Restart start button status + setStartButton('Start'); + // Give some space to the right of the graph + setTimeout(() => { + console.log('coach cmd desactivar climber'); + pauseButton(); + setClimberStatus(false); + }, 500); + } + + function simulate() { + simulateButton() + } + + const { data, error, loading } = useSubscription( + SPEED_BACKEND_COMMANDS_SUBSCRIPTION + ); + + if (loading) { + console.log('USE Coach backend subscription loading'); + //return

Press start...

; + } + + // https://reactjs.org/blog/2020/02/26/react-v16.13.0.html#warnings-for-some-updates-during-render + useEffect(() => { + // Each new render get the data from the last subscription message + // Only execute pause() once + if ( + data && + climberStatus && + data.speedBackendCommands.command === 'end' && + data.speedBackendCommands.value !== lastStop + ) { + pause(); + setLastStop(data.speedBackendCommands.value); + } + }); + + // After useEffect to avoid the problem of having renderer less hooks in the case of an error + if (error) { + // TODO show a toast message https://elastic.github.io/eui/#/display/toast + console.log('USE Coach subscription backend error', error); + return

Error: {error.message}

; + } + + // TODO lock start button while running + return ( + <> + + + start()}> + {startButton} + + + + pause()}> + Stop + + + + simulate()}> + Simulate + + + {/* + * Are these buttons needed? + + resetButton()}>Reset + + + calibratePlusButton()}> + Calibrate + + + + + calibrateLessButton()}> + Calibrate - + + + */} + + + ); +}; + +export default CoachCmd; diff --git a/app/frontend/src/components/speed/coach_data.tsx b/app/frontend/src/components/speed/coach_data.tsx new file mode 100644 index 0000000..dc78850 --- /dev/null +++ b/app/frontend/src/components/speed/coach_data.tsx @@ -0,0 +1,261 @@ +import React, { useState } from 'react'; +import gql from 'graphql-tag'; +import { useSubscription } from '@apollo/react-hooks'; +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { connect } from 'react-redux'; +import { TimeEvent } from 'pondjs'; + +import GoogleSheet from '../google/GoogleSheet'; +import DataCard from '../../components/data_card'; +import Download from '@axetroy/react-download'; +import moment from 'moment'; +import { AppName } from '../../settings'; + +import loadable from '@loadable/component' + +const Graph = loadable(() => import('./graph')) + + +const mapStateToProps = ({ + name: config_name, + weight: config_weight, + google_auto_export: config_google_auto_export, + + speed_extra_weight: config_speed_extra_weight, + speed_loss: config_speed_loss, + speed_onerm: config_speed_onerm, +}) => { + return { + config_name, + config_weight, + config_google_auto_export, + + config_speed_extra_weight, + config_speed_loss, + config_speed_onerm, + }; +}; + +const View = ({ + climberStatus, + data, + config_name, + config_weight, + config_google_auto_export, + config_speed_extra_weight, + config_speed_loss, + config_speed_onerm, +}) => { + const [speedEvents, setSpeedEvents] = useState([]); + const [positionEvents, setPositionEvents] = useState([]); + // Identifiers start on 0 + const [id, setId] = useState(-1); + const [status, setStatus] = useState(false); + const [speed, setSpeed] = useState(0); + const [position, setPosition] = useState(0); + const [pullups, setPullups] = useState(0); + const [max_speed, setMaxSpeed] = useState(0); + const [lastSpeed, setLastSpeed] = useState(0); + const [lastSpeedValues, setLastSpeedValues] = useState([]); + const [speedLoss, setSpeedLoss] = useState(0); + // TODO add average speed? + + // Reset the value array when moving from paused to start + if (climberStatus && !status) { + setStatus(true); + setSpeedEvents([]); + setPositionEvents([]); + setSpeed(0); + setMaxSpeed(0); + setSpeedLoss(0); + setPosition(0); + setPullups(0); + setLastSpeed(0); + setLastSpeedValues([]); + } else if (!climberStatus && status) { + setStatus(false); + } + + // TODO parametrize 1-RM + // TODO Create a page to measure 1RM? + // TODO where can be used? Panel with how close we are to the 1RM? + const onerm = 1; + + // Skip if we have already seen that data + if (data && data.speed.Id !== id) { + setId(data.speed.Id); + + // Generate an event for the graph for each new speed value + if (data.speed.speed) { + const t = new Date(); + const eventSpeed = new TimeEvent(t, data.speed.speed); + speedEvents.push(eventSpeed); + + if (data.speed.speed !== speed) { + setSpeed(data.speed.speed); + } + } + + if (data.speed.position) { + const t = new Date(); + const eventPosition = new TimeEvent(t, data.speed.position); + positionEvents.push(eventPosition); + + if (data.speed.position !== position) { + setPosition(data.speed.position); + } + } + + if (data.speed.max_speed && data.speed.max_speed !== max_speed) { + setMaxSpeed(data.speed.max_speed); + } + + if (data.speed.pull_ups && data.speed.pull_ups !== pullups) { + setPullups(data.speed.pull_ups); + // For each new pullup, store the speed for that one + if (data.speed.pull_ups !== 0) { + setLastSpeedValues([...lastSpeedValues, data.speed.last_speed]); + } + } + + if (data.speed.speed_loss && data.speed.speed_loss !== speedLoss) { + setSpeedLoss(data.speed.speed_loss); + } + } + + // TODO put the name of the app in the export file + const export_file = `${AppName}_speed_${moment().format( + 'YYYY-MM-DD_HH:mm:ss' + )}.csv`; + + // prettier-ignore + const export_data = `date,body_weight,pullups,extra_weight,max_speed,speed_loss,${lastSpeedValues.map((v,i) => 'speed_pullup_'+i)} +${moment().format('YYYY/MM/DD HH:mm')},${config_weight},${config_speed_extra_weight},${pullups.toFixed(0)},${max_speed.toFixed(2)},${speedLoss.toFixed(2)},${lastSpeedValues.map((v,_) => v.toFixed(2))} +`; + + const sheetHeaders = [ + 'date', + 'body_weight', + 'pullups', + 'extra_weight', + 'max_speed', + 'speed_loss', + ...Array(50).fill(1).map( (_,i) => `speed_pullup_${i+1}` ), + ]; + const sheetValues = [ + moment().format('DD/MM/YYYY HH:mm:ss'), + config_weight, + pullups.toFixed(0), + config_speed_extra_weight, + max_speed.toFixed(2), + speedLoss.toFixed(2), + ...lastSpeedValues.map((v,_) => v.toFixed(2)), + ]; + + // TODO how to put the export button to be less anoying? + // I like in the top bar, but data is not there. Use redux? + // + // TODO: implement auto export, with the configuration setting + + // TODO mark the speed panel red if the speed loss is lower than a predefined threshold + // + // TODO create a setting to automatically export data after the end of an exercise + + return ( + <> + + + + Export file + + + + + {/* + + */} + + + config_speed_loss} + /> + + + {/* TODO show pct speed loss in each card */} + {lastSpeedValues.map((v, i) => ( + + ))} + + + + + + + + ); +}; + +const ConnectedView = connect(mapStateToProps)(View); + +const COACH_SUBSCRIPTION = gql` + subscription { + speed { + Id + position + speed + pull_ups + speed_loss + last_speed + max_speed + } + } +`; + +const CoachData = ({ climberStatus }) => { + const { data, error, loading } = useSubscription(COACH_SUBSCRIPTION); + + if (loading) { + console.log('USE Coach subscription loading'); + //return

Press start...

; + } + + if (error) { + // TODO show a toast message https://elastic.github.io/eui/#/display/toast + console.log('USE Coach subscription error', error); + return

Error: {error.message}

; + } + + return ; +}; + +export default CoachData; diff --git a/app/frontend/src/components/speed/graph.tsx b/app/frontend/src/components/speed/graph.tsx new file mode 100644 index 0000000..7d0e56b --- /dev/null +++ b/app/frontend/src/components/speed/graph.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { + Charts, + ChartContainer, + ChartRow, + YAxis, + LineChart, + Resizable, +} from 'react-timeseries-charts'; +import { TimeSeries, TimeEvent, TimeRange } from 'pondjs'; + +const Graph = ({ speedEvents, positionEvents }) => { + const speedSerie = new TimeSeries({ + name: 'raw', + events: speedEvents, + }); + + const positionSerie = new TimeSeries({ + name: 'raw', + events: positionEvents, + }); + + // Set max Y axis + const maxSpeedSerie = parseFloat(speedSerie.max()); + const max_speed = maxSpeedSerie > 0.5 ? maxSpeedSerie : 0.5; + + const maxPositionSerie = parseFloat(positionSerie.max()); + const max_position = maxPositionSerie > 0.5 ? maxPositionSerie : 0.5; + + let timerange = speedSerie.timerange(); + + // Handle if we don't have data + if (!timerange) { + timerange = new TimeRange(0, 1); + } + + // TODO add marker to show the value where the mouse is + // https://github.com/esnet/react-timeseries-charts/blob/master/src/website/packages/charts/examples/wind/Index.js#L90 + // Same timerange for both series, assuming we always get speed and position values togheter + return ( + <> + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Graph; diff --git a/app/frontend/src/components/strength/coach_command.tsx b/app/frontend/src/components/strength/coach_command.tsx new file mode 100644 index 0000000..e60a83c --- /dev/null +++ b/app/frontend/src/components/strength/coach_command.tsx @@ -0,0 +1,185 @@ +import React, { useState, useEffect } from 'react'; +import { EuiText, EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { useMutation, useSubscription } from '@apollo/react-hooks'; +import gql from 'graphql-tag'; +import { setTimeout } from 'timers'; + +const CoachCmd = ({ climberStatus, setClimberStatus }) => { + // TODO parametrize calibrate command. One command for both mutations + // Allow to define the step of the calibration + const CALIBRATE_LESS_CMD = gql` + mutation { + strengthCommand(params: { command: CALIBRATE, value: -1 }) { + message + } + } + `; + + const CALIBRATE_PLUS_CMD = gql` + mutation { + strengthCommand(params: { command: CALIBRATE, value: 1 }) { + message + } + } + `; + + const TARE_CMD = gql` + mutation { + strengthCommand(params: { command: TARE }) { + message + } + } + `; + + const PAUSE_CMD = gql` + mutation { + strengthCommand(params: { command: PAUSE }) { + message + } + } + `; + + const RESTART_CMD = gql` + mutation { + strengthCommand(params: { command: RESTART }) { + message + } + } + `; + + const SIMULATE_CMD = gql` + mutation { + strengthCommand(params: { command: SIMULATE }) { + message + } + } + `; + + const STRENGTH_BACKEND_COMMANDS_SUBSCRIPTION = gql` + subscription { + strengthBackendCommands { + command + value + } + } + `; + + const [restartButton, {}] = useMutation(RESTART_CMD); + const [pauseButton, {}] = useMutation(PAUSE_CMD); + const [tareButton, {}] = useMutation(TARE_CMD); + const [simulateButton, {}] = useMutation(SIMULATE_CMD); + const [calibratePlusButton, {}] = useMutation(CALIBRATE_PLUS_CMD); + const [calibrateLessButton, {}] = useMutation(CALIBRATE_LESS_CMD); + const [lastStop, setLastStop] = useState(0); + const [startButton, setStartButton] = useState('Start'); + + // Give 5" to get ready + // Start capturing data one sec before, to avoid loosing first measures + function start() { + setStartButton('Start ... 5'); + setTimeout(() => { + setStartButton('Start ... 4'); + }, 1000); + setTimeout(() => { + setStartButton('Start ... 3'); + }, 2000); + setTimeout(() => { + setStartButton('Start ... 2'); + }, 3000); + setTimeout(() => { + setStartButton('Start ... 1'); + restartButton(); + console.log('coach cmd activar climber'); + setClimberStatus(true); + }, 4000); + setTimeout(() => { + setStartButton('Go!'); + }, 5000); + } + + function pause() { + // Restart start button status + setStartButton('Start'); + // Give some space to the right of the graph + setTimeout(() => { + console.log('coach cmd desactivar climber'); + pauseButton(); + setClimberStatus(false); + }, 500); + } + + function simulate() { + simulateButton(); + } + + const { data, error, loading } = useSubscription( + STRENGTH_BACKEND_COMMANDS_SUBSCRIPTION + ); + + if (loading) { + console.log('USE Coach backend subscription loading'); + //return

Press start...

; + } + + // https://reactjs.org/blog/2020/02/26/react-v16.13.0.html#warnings-for-some-updates-during-render + useEffect(() => { + // Each new render get the data from the last subscription message + // Only execute pause() once + if ( + data && + climberStatus && + data.strengthBackendCommands.command === 'end' && + data.strengthBackendCommands.value !== lastStop + ) { + pause(); + setLastStop(data.strengthBackendCommands.value); + } + }); + + // After useEffect to avoid the problem of having renderer less hooks in the case of an error + if (error) { + // TODO show a toast message https://elastic.github.io/eui/#/display/toast + console.log('USE Coach subscription backend error', error); + return

Error: {error.message}

; + } + + // TODO have only one Calibrate button. + // Once pressed, show the other buttons (Tare, Calib+, Calib-, End) and start capturing data. + // Once calibrated, press end to restore to the initial position + return ( + <> + + + start()}> + {startButton} + + + + pause()}> + Stop + + + + tareButton()}>Tare + + + calibratePlusButton()}> + Calibrate + + + + + calibrateLessButton()}> + Calibrate - + + + + simulate()}> + Simulate + + + + + ); +}; + +export default CoachCmd; diff --git a/app/frontend/src/components/strength/coach_data.tsx b/app/frontend/src/components/strength/coach_data.tsx new file mode 100644 index 0000000..ee69175 --- /dev/null +++ b/app/frontend/src/components/strength/coach_data.tsx @@ -0,0 +1,286 @@ +import React, { useState, useEffect } from 'react'; +import gql from 'graphql-tag'; +import { useSubscription } from '@apollo/react-hooks'; +import { EuiButton, EuiButtonEmpty, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { connect } from 'react-redux'; +import { TimeEvent } from 'pondjs'; + +import DataCard from '../../components/data_card'; +import GoogleSheet from '../google/GoogleSheet'; +import Download from '@axetroy/react-download'; +import moment from 'moment'; +import { AppName } from '../../settings'; +import loadable from '@loadable/component' + +const Graph = loadable(() => import('./graph')) + +const mapStateToProps = ({ + name: config_name, + weight: config_weight, + google_auto_export: config_google_auto_export, + + strength_extra_weight: config_strength_extra_weight, + strength_edge_size: config_strength_edge_size, + strength_expected: config_strength_expected, + strength_expected_pct: config_strength_expected_pct, +}) => { + return { + config_name, + config_weight, + config_google_auto_export, + + config_strength_extra_weight, + config_strength_edge_size, + config_strength_expected, + config_strength_expected_pct, + }; +}; + +const View = ({ + climberStatus, + data, + config_name, + config_weight, + config_google_auto_export, + config_strength_extra_weight, + config_strength_edge_size, + config_strength_expected, + config_strength_expected_pct, +}) => { + const [strengthValues, setStrengthValues] = useState([]); + const [status, setStatus] = useState(false); + const [time, setTime] = useState(0); + const [strength, setStrength] = useState(0); + const [avg_strength, setAvgStrength] = useState(0); + const [max_strength, setMaxStrength] = useState(0); + const [fti, setFti] = useState(0); + const [rfd, setRfd] = useState(0); + const [strengthLoss, setStrengthLoss] = useState(0); + + // TODO max_strength and MVC is the same? Currently MVC is max_strength/body_weight + // TODO do not reset values if we are moving between screens? + + // Reset the value array when moving from paused to start + if (climberStatus && !status) { + setStatus(true); + setTime(0); + setStrengthValues([]); + setFti(0); + setRfd(0); + setStrength(0); + setAvgStrength(0); + setMaxStrength(0); + setStrengthLoss(0); + } else if (!climberStatus && status) { + setStatus(false); + } + + // TODO selector to change to Newtons + const unit = 'kg'; + + if (data) { + // Generate an event for the graph for each new strength value + if (data.strength.strength) { + const t = new Date(); + const event = new TimeEvent(t, data.strength.strength); + strengthValues.push(event); + + if (data.strength.strength !== strength) { + setStrength(data.strength.strength); + } + } + + if (data.strength.time && data.strength.time !== time) { + setTime(data.strength.time); + } + + if ( + data.strength.max_strength && + data.strength.max_strength !== max_strength + ) { + setMaxStrength(data.strength.max_strength); + } + + if ( + data.strength.avg_strength && + data.strength.avg_strength !== avg_strength + ) { + setAvgStrength(data.strength.avg_strength); + } + + if (data.strength.fti && data.strength.fti !== fti) { + setFti(data.strength.fti); + } + + if (data.strength.rfd && data.strength.rfd !== rfd) { + setRfd(data.strength.rfd); + } + + if ( + data.strength.strength_loss && + data.strength.strength_loss !== strengthLoss + ) { + setStrengthLoss(data.strength.strength_loss); + } + } + + //let duty_cycle = this.props.data.strength.duty_cycle + const mvc = max_strength / config_weight; + const fti_normalized = fti / config_weight; + const rfd_normalized = rfd / config_weight; + + // TODO put the name of the app in the export file + const export_file = `${AppName}_strength_${moment().format( + 'YYYY-MM-DD_HH:mm:ss' + )}.csv`; + + // TODO generate csv from the sheetHeaders and sheetValues arrays + // prettier-ignore + const export_data = `date,body_weight,edge_size,time,max_strength,average_strength,expected_strength,strength_loss,MVC,FTI,RFD +${moment().format('YYYY/MM/DD HH:mm')},${config_weight},${config_strength_edge_size},${time.toFixed(3)},${max_strength.toFixed(2)},${avg_strength.toFixed(2)},${config_strength_expected},${strengthLoss.toFixed(1)},${mvc.toFixed(2)},${fti_normalized.toFixed(2)},${rfd_normalized.toFixed(2)} +`; + + // TODO homogenize columns between speed and strength + const sheetHeaders = [ + 'date', + 'body_weight', + 'edge_size', + 'time', + 'max_strength', + 'average_strength', + 'expected_strength', + 'strength_loss', + 'MVC', + 'FTI', + 'RFD', + ]; + const sheetValues = [ + moment().format('DD/MM/YYYY HH:mm:ss'), + config_weight, + config_strength_edge_size, + time.toFixed(3), + max_strength.toFixed(2), + avg_strength.toFixed(2), + config_strength_expected, + strengthLoss.toFixed(2), + mvc.toFixed(2), + fti_normalized.toFixed(2), + rfd_normalized.toFixed(2), + ]; + + // TODO how to put the export button to be less anoying? + // I like in the top bar, but data is not there + // + // TODO: implement auto export, with the configuration setting + + // TODO show somehow that we are actually doing the exercise, the backend has crossed the threshold and sending calculated values + return ( + <> + + + + Export + + + + + = + config_strength_expected * + ((100 - config_strength_expected_pct) / 100) && + strength < + config_strength_expected * + ((100 + config_strength_expected_pct) / 100) + } + /> + + + + {/**/} + + + + + + + + + + + ); +}; + +const ConnectedView = connect(mapStateToProps)(View); + +const COACH_SUBSCRIPTION = gql` + subscription { + strength { + time + strength + max_strength + avg_strength + rfd + fti + strength_loss + duty_cycle + } + } +`; + +const CoachData = ({ climberStatus }) => { + const { data, error, loading } = useSubscription(COACH_SUBSCRIPTION); + + if (loading) { + console.log('USE Coach subscription loading'); + //return

Press start...

; + } + + if (error) { + // TODO show a toast message https://elastic.github.io/eui/#/display/toast + console.log('USE Coach subscription error', error); + return

Error: {error.message}

; + } + + return ; +}; + +export default CoachData; diff --git a/app/frontend/src/components/strength/graph.tsx b/app/frontend/src/components/strength/graph.tsx new file mode 100644 index 0000000..b0e5c34 --- /dev/null +++ b/app/frontend/src/components/strength/graph.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { + Charts, + ChartContainer, + ChartRow, + YAxis, + LineChart, + Resizable, +} from 'react-timeseries-charts'; +import { TimeSeries, TimeEvent, TimeRange } from 'pondjs'; + +const Graph = ({ events, unit }) => { + const eventSeries = new TimeSeries({ + name: 'raw', + events: events, + }); + + // Set max axis Y to 10 or the max value + const maxSerie = parseInt(eventSeries.max()); + const max = maxSerie > 10 ? maxSerie : 10; + + let timerange = eventSeries.timerange(); + + // Handle if we don't have data + if (!timerange) { + timerange = new TimeRange(0, 1); + } + + // TODO add marker to show the value where the mouse is + // https://github.com/esnet/react-timeseries-charts/blob/master/src/website/packages/charts/examples/wind/Index.js#L90 + return ( + + + + + + + + + + + ); +}; + +export default Graph; diff --git a/app/frontend/src/global_styling/index.scss b/app/frontend/src/global_styling/index.scss new file mode 100644 index 0000000..32c8646 --- /dev/null +++ b/app/frontend/src/global_styling/index.scss @@ -0,0 +1,5 @@ +// Imported global styling from EUI +@import '~@elastic/eui/src/global_styling/index'; + +// Site specific global styling +@import './mixins/index'; \ No newline at end of file diff --git a/app/frontend/src/global_styling/mixins/_index.scss b/app/frontend/src/global_styling/mixins/_index.scss new file mode 100644 index 0000000..75927df --- /dev/null +++ b/app/frontend/src/global_styling/mixins/_index.scss @@ -0,0 +1 @@ +// Put your mixins in here. They will be available in all themes used in this site diff --git a/app/frontend/src/images/logo.svg b/app/frontend/src/images/logo.svg new file mode 100644 index 0000000..fa880b2 --- /dev/null +++ b/app/frontend/src/images/logo.svg @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/frontend/src/pages/404.tsx b/app/frontend/src/pages/404.tsx new file mode 100644 index 0000000..53c19e7 --- /dev/null +++ b/app/frontend/src/pages/404.tsx @@ -0,0 +1,25 @@ +import React, { Fragment } from 'react'; +import { Link } from 'gatsby'; + +import { EuiEmptyPrompt, EuiButton } from '@elastic/eui'; + +const NotFoundPage = () => ( + Ack! There's nothing here.} + body={ + +

You found a page that doesn't exist.

+
+ } + actions={ + + + Go Home + + + } + /> +); + +export default NotFoundPage; diff --git a/app/frontend/src/pages/configuration.tsx b/app/frontend/src/pages/configuration.tsx new file mode 100644 index 0000000..5ec5b75 --- /dev/null +++ b/app/frontend/src/pages/configuration.tsx @@ -0,0 +1,348 @@ +import React, { useState, useEffect } from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; + +import { + EuiPage, + EuiPageBody, + EuiPageContent, + EuiPageContentHeader, + EuiPageContentHeaderSection, + EuiPageContentBody, + EuiPageHeader, + EuiPageHeaderSection, + EuiTitle, + EuiFieldNumber, + EuiCheckbox, +} from '@elastic/eui'; +import { EuiForm } from '@elastic/eui'; +import { EuiFormRow } from '@elastic/eui'; +import { EuiFieldText } from '@elastic/eui'; +import { EuiSwitch } from '@elastic/eui'; +import { EuiDescribedFormGroup } from '@elastic/eui'; +import { EuiText } from '@elastic/eui'; + +const Name = ({ name, changeName }) => ( + + + +); +Name.propTypes = { + name: PropTypes.string.isRequired, + changeName: PropTypes.func.isRequired, +}; + +const Weight = ({ weight, changeWeight }) => ( + + kg} + /> + +); +Weight.propTypes = { + weight: PropTypes.number.isRequired, + changeWeight: PropTypes.func.isRequired, +}; + +const GoogleAutoExport = ({ google_auto_export, changeGoogleAutoExport }) => ( + + + +); +GoogleAutoExport.propTypes = { + google_auto_export: PropTypes.bool.isRequired, + changeGoogleAutoExport: PropTypes.func.isRequired, +}; + +// SPEED +const SpeedExtraWeight = ({ speed_extra_weight, changeSpeedExtraWeight }) => ( + + kg} + /> + +); +SpeedExtraWeight.propTypes = { + speed_extra_weight: PropTypes.number.isRequired, + changeSpeedExtraWeight: PropTypes.func.isRequired, +}; + +const SpeedLoss = ({ speed_loss, changeSpeedLoss }) => ( + + %} + /> + +); +SpeedLoss.propTypes = { + speed_loss: PropTypes.number.isRequired, + changeSpeedLoss: PropTypes.func.isRequired, +}; + +const OneRM = ({ speed_onerm, changeSpeedOneRM}) => ( + + kg} + /> + +); +OneRM.propTypes = { + speed_onerm: PropTypes.number.isRequired, + changeSpeedOneRM: PropTypes.func.isRequired, +}; + +// Strength +const StrengthExtraWeight = ({ + strength_extra_weight, + changeStrengthExtraWeight, +}) => ( + + kg} + /> + +); +StrengthExtraWeight.propTypes = { + strength_extra_weight: PropTypes.number.isRequired, + changeStrengthExtraWeight: PropTypes.func.isRequired, +}; + +const StrengthEdgeSize = ({ strength_edge_size, changeStrengthEdgeSize }) => ( + + mm} + /> + +); +StrengthEdgeSize.propTypes = { + strength_edge_size: PropTypes.number.isRequired, + changeStrengthEdgeSize: PropTypes.func.isRequired, +}; + +const StrengthExpected = ({ strength_expected, changeStrengthExpected}) => ( + + kg} + /> + +); +StrengthExpected.propTypes = { + strength_expected: PropTypes.number.isRequired, + changeStrengthExpected: PropTypes.func.isRequired, +}; + +const StrengthExpectedPct = ({ strength_expected_pct, changeStrengthExpectedPct }) => ( + + %} + /> + +); +StrengthExpectedPct.propTypes = { + strength_expected_pct: PropTypes.number.isRequired, + changeStrengthExpectedPct: PropTypes.func.isRequired, +}; + +const mapStateToProps = ({ + name, + weight, + google_auto_export, + + speed_extra_weight, + speed_loss, + speed_onerm, + + strength_extra_weight, + strength_edge_size, + strength_expected, + strength_expected_pct, +}) => { + return { + name, + weight, + google_auto_export, + + speed_extra_weight, + speed_loss, + speed_onerm, + + strength_extra_weight, + strength_edge_size, + strength_expected, + strength_expected_pct, + }; +}; + +const mapDispatchToProps = dispatch => { + return { + changeName: event => + dispatch({ type: 'CHANGE_NAME', value: event.target.value }), + changeWeight: event => + dispatch({ type: 'CHANGE_WEIGHT', value: event.target.value }), + changeGoogleAutoExport: event => + dispatch({ type: 'TOGGLE_GOOGLE_AUTO_EXPORT' }), + + // SPEED + changeSpeedExtraWeight: event => + dispatch({ type: 'CHANGE_SPEED_EXTRA_WEIGHT', value: event.target.value }), + changeSpeedLoss: event => + dispatch({ type: 'CHANGE_SPEED_LOSS', value: event.target.value }), + changeSpeedOneRM: event => + dispatch({ type: 'CHANGE_SPEED_ONE_RM', value: event.target.value }), + + // STRENGTH + changeStrengthExtraWeight: event => + dispatch({ type: 'CHANGE_STRENGTH_EXTRA_WEIGHT', value: event.target.value }), + changeStrengthEdgeSize: event => + dispatch({ type: 'CHANGE_STRENGTH_EDGE_SIZE', value: event.target.value }), + changeStrengthExpected: event => + dispatch({ type: 'CHANGE_STRENGTH_EXPECTED', value: event.target.value }), + }; +}; + +const ConnectedName = connect(mapStateToProps, mapDispatchToProps)(Name); +const ConnectedWeight = connect(mapStateToProps, mapDispatchToProps)(Weight); +const ConnectedGoogleAutoExport = connect( + mapStateToProps, + mapDispatchToProps +)(GoogleAutoExport); + +const ConnectedOneRM = connect(mapStateToProps, mapDispatchToProps)(OneRM); +const ConnectedSpeedLoss = connect( + mapStateToProps, + mapDispatchToProps +)(SpeedLoss); +const ConnectedSpeedExtraWeight = connect( + mapStateToProps, + mapDispatchToProps +)(SpeedExtraWeight); + +const ConnectedStrengthEdgeSize = connect( + mapStateToProps, + mapDispatchToProps +)(StrengthEdgeSize); +const ConnectedStrengthExtraWeight = connect( + mapStateToProps, + mapDispatchToProps +)(StrengthExtraWeight); +const ConnectedStrengthExpected = connect( + mapStateToProps, + mapDispatchToProps +)(StrengthExpected); +const ConnectedStrengthExpectedPct = connect( + mapStateToProps, + mapDispatchToProps +)(StrengthExpectedPct); + +const ConfigurationPage = () => { + return ( + + + + + +

Configuration

+
+
+
+ + + + + +

General

+
+
+
+ + + + + + + + + + + + + + +

Speed

+
+
+
+ + + + + + + + + + + + + +

Strength

+
+
+
+ + + + + + + + + + + + +
+
+
+ ); +}; + +export default ConfigurationPage; diff --git a/app/frontend/src/pages/index.tsx b/app/frontend/src/pages/index.tsx new file mode 100644 index 0000000..4a6f8f7 --- /dev/null +++ b/app/frontend/src/pages/index.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { Link } from 'gatsby'; +import { + EuiButton, + EuiCode, + EuiPage, + EuiPageBody, + EuiPageContent, + EuiPageContentBody, + EuiPageContentHeader, + EuiPageContentHeaderSection, + EuiPageHeader, + EuiPageHeaderSection, + EuiText, + EuiTitle, +} from '@elastic/eui'; + +// TODO add settings page to add name, body weight, etc +export default () => ( + + + + + +

Climbing training

+
+
+
+ + + + + Go to strength training page + + + + Go to speed training page + + + +
+
+); diff --git a/app/frontend/src/pages/speed.tsx b/app/frontend/src/pages/speed.tsx new file mode 100644 index 0000000..4037afd --- /dev/null +++ b/app/frontend/src/pages/speed.tsx @@ -0,0 +1,49 @@ +import React, { useState } from 'react'; + +import { + EuiPage, + EuiPageBody, + EuiPageContent, + EuiPageContentBody, + EuiPageHeader, + EuiPageHeaderSection, + EuiTitle, +} from '@elastic/eui'; + +import CoachData from '../components/speed/coach_data'; +import CoachCommand from '../components/speed/coach_command'; + +const SpeedPage = () => { + const [climberStatus, setClimberStatus] = useState(false); + + return ( + + + + + +

Speed training

+
+
+
+ + + + + + + + + + + + +
+
+ ); +}; + +export default SpeedPage; diff --git a/app/frontend/src/pages/strength.tsx b/app/frontend/src/pages/strength.tsx new file mode 100644 index 0000000..f045b57 --- /dev/null +++ b/app/frontend/src/pages/strength.tsx @@ -0,0 +1,49 @@ +import React, { useState } from 'react'; + +import { + EuiPage, + EuiPageBody, + EuiPageContent, + EuiPageContentBody, + EuiPageHeader, + EuiPageHeaderSection, + EuiTitle, +} from '@elastic/eui'; + +import CoachData from '../components/strength/coach_data'; +import CoachCommand from '../components/strength/coach_command'; + +const StrengthPage = ({}) => { + const [climberStatus, setClimberStatus] = useState(false); + + return ( + + + + + +

Strength training

+
+
+
+ + + + + + + + + + + + +
+
+ ); +}; + +export default StrengthPage; diff --git a/app/frontend/src/settings.tsx b/app/frontend/src/settings.tsx new file mode 100644 index 0000000..b0a45d3 --- /dev/null +++ b/app/frontend/src/settings.tsx @@ -0,0 +1,10 @@ +const AppName = 'piclimbing'; +const Server = '127.0.0.1:8080'; +const HTTPServer = `http://${Server}/query`; +const WSServer = `ws://${Server}/query`; + +const GoogleClientId = + '275924066084-dgk36mi6e5t4c8oilvt2nmjmq0tquaq8.apps.googleusercontent.com'; +const GoogleApiKey = 'AIzaSyCl0nG267IOgnfT-sWUj0cDb4FEj8Kt9Ss'; + +export { AppName, HTTPServer, WSServer, GoogleClientId, GoogleApiKey }; diff --git a/app/frontend/src/state/createStore.tsx b/app/frontend/src/state/createStore.tsx new file mode 100644 index 0000000..3aaca86 --- /dev/null +++ b/app/frontend/src/state/createStore.tsx @@ -0,0 +1,74 @@ +import { createStore as reduxCreateStore } from 'redux'; +import { saveState } from './localStorage'; + +const reducer = (state, action) => { + switch (action.type) { + case 'CHANGE_NAME': + return { ...state, name: action.value }; + + case 'TOGGLE_GOOGLE_AUTO_EXPORT': + return { ...state, google_auto_export: !state.google_auto_export }; + + case 'CHANGE_WEIGHT': + return { ...state, weight: parseFloat(action.value) }; + + // SPEED + case 'CHANGE_SPEED_EXTRA_WEIGHT': + return { ...state, speed_extra_weight: parseFloat(action.value) }; + + case 'CHANGE_SPEED_LOSS': + return { ...state, speed_loss: parseFloat(action.value) }; + + case 'CHANGE_SPEED_ONE_RM': + return { ...state, speed_onerm: parseFloat(action.value) }; + + // STRENGTH + case 'CHANGE_STRENGTH_EXTRA_WEIGHT': + return { ...state, strength_extra_weight: parseFloat(action.value) }; + + case 'CHANGE_STRENGTH_EDGE_SIZE': + return { ...state, strength_edge_size: parseFloat(action.value) }; + + case 'CHANGE_STRENGTH_EXPECTED': + return { ...state, strength_expected: parseFloat(action.value) }; + + case 'CHANGE_STRENGTH_EXPECTED_PCT': + return { ...state, strength_expected_pct: parseFloat(action.value) }; + + default: + console.log('unkown reducer', action); + break; + } + + return state; +}; + +const initialState = { + name: '', + weight: 70, + google_auto_export: false, + + speed_extra_weight: 20, + speed_loss: 20, + speed_onerm: 40, + + strength_extra_weight: 20, + strength_edge_size: 20, + strength_expected: 90, + strength_expected_pct: 10, +}; + +// Use initialState values only if we don't have in the local storage +const createStore = (persistedState={}) => { + // Fill empty persistedState values with initialState + Object.entries(initialState).forEach(([key, value]) => { + if (!persistedState[key]) { + persistedState[key] = value; + } + }); + + saveState(persistedState); + + return reduxCreateStore(reducer, persistedState); +}; +export default createStore; diff --git a/app/frontend/src/state/localStorage.js b/app/frontend/src/state/localStorage.js new file mode 100644 index 0000000..18463e6 --- /dev/null +++ b/app/frontend/src/state/localStorage.js @@ -0,0 +1,20 @@ +export const saveState = state => { + try { + const serializedState = JSON.stringify(state); + localStorage.setItem('state', serializedState); + } catch { + // ignore write errors + } +}; + +export const loadState = () => { + try { + const serializedState = localStorage.getItem('state'); + if (serializedState === null) { + return undefined; + } + return JSON.parse(serializedState); + } catch (err) { + return undefined; + } +}; diff --git a/app/frontend/src/themes/theme_dark.scss b/app/frontend/src/themes/theme_dark.scss new file mode 100644 index 0000000..9e8ca53 --- /dev/null +++ b/app/frontend/src/themes/theme_dark.scss @@ -0,0 +1,9 @@ +// This file generates a blob file that has a dark background + +// If you want to change the dark theme, replace this line +@import '~@elastic/eui/src/themes/eui/eui_colors_dark'; + +// These are required +@import '../global_styling/index'; +@import '~@elastic/eui/src/components/index'; +@import '../components/index'; \ No newline at end of file diff --git a/app/frontend/src/themes/theme_light.scss b/app/frontend/src/themes/theme_light.scss new file mode 100644 index 0000000..6cea692 --- /dev/null +++ b/app/frontend/src/themes/theme_light.scss @@ -0,0 +1,9 @@ +// This file generates a blob file that has a light background + +// If you want to change the dark theme, replace this line +@import '~@elastic/eui/src/themes/eui/eui_colors_light'; + +// These are required +@import '../global_styling/index'; +@import '~@elastic/eui/src/components/index'; +@import '../components/index'; \ No newline at end of file diff --git a/app/frontend/tsconfig.json b/app/frontend/tsconfig.json new file mode 100644 index 0000000..f8fe027 --- /dev/null +++ b/app/frontend/tsconfig.json @@ -0,0 +1,62 @@ +{ + "compilerOptions": { + /* Basic Options */ + "target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "react", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "lib", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "incremental": true, /* Enable incremental compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + } +} diff --git a/app/frontend/yarn.lock b/app/frontend/yarn.lock new file mode 100644 index 0000000..4584e31 --- /dev/null +++ b/app/frontend/yarn.lock @@ -0,0 +1,16421 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@apollo/react-common@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@apollo/react-common/-/react-common-3.1.4.tgz#ec13c985be23ea8e799c9ea18e696eccc97be345" + integrity sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA== + dependencies: + ts-invariant "^0.4.4" + tslib "^1.10.0" + +"@apollo/react-components@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@apollo/react-components/-/react-components-3.1.5.tgz#040d2f35ce4947747efe16f76d59dcbd797ffdaf" + integrity sha512-c82VyUuE9VBnJB7bnX+3dmwpIPMhyjMwyoSLyQWPHxz8jK4ak30XszJtqFf4eC4hwvvLYa+Ou6X73Q8V8e2/jg== + dependencies: + "@apollo/react-common" "^3.1.4" + "@apollo/react-hooks" "^3.1.5" + prop-types "^15.7.2" + ts-invariant "^0.4.4" + tslib "^1.10.0" + +"@apollo/react-hoc@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@apollo/react-hoc/-/react-hoc-3.1.5.tgz#6552d2fb4aafc59fdc8f4e353358b98b89cfab6f" + integrity sha512-jlZ2pvEnRevLa54H563BU0/xrYSgWQ72GksarxUzCHQW85nmn9wQln0kLBX7Ua7SBt9WgiuYQXQVechaaCulfQ== + dependencies: + "@apollo/react-common" "^3.1.4" + "@apollo/react-components" "^3.1.5" + hoist-non-react-statics "^3.3.0" + ts-invariant "^0.4.4" + tslib "^1.10.0" + +"@apollo/react-hooks@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@apollo/react-hooks/-/react-hooks-3.1.5.tgz#7e710be52461255ae7fc0b3b9c2ece64299c10e6" + integrity sha512-y0CJ393DLxIIkksRup4nt+vSjxalbZBXnnXxYbviq/woj+zKa431zy0yT4LqyRKpFy9ahMIwxBnBwfwIoupqLQ== + dependencies: + "@apollo/react-common" "^3.1.4" + "@wry/equality" "^0.1.9" + ts-invariant "^0.4.4" + tslib "^1.10.0" + +"@apollo/react-ssr@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@apollo/react-ssr/-/react-ssr-3.1.5.tgz#53703cd493afcde567acc6d5512cab03dafce6de" + integrity sha512-wuLPkKlctNn3u8EU8rlECyktpOUCeekFfb0KhIKknpGY6Lza2Qu0bThx7D9MIbVEzhKadNNrzLcpk0Y8/5UuWg== + dependencies: + "@apollo/react-common" "^3.1.4" + "@apollo/react-hooks" "^3.1.5" + tslib "^1.10.0" + +"@axetroy/react-download@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@axetroy/react-download/-/react-download-1.1.1.tgz#7203cbb23a6e9d5f01a9787aae13c2229598c289" + integrity sha512-fbzQxO5VIwbPF1EzPHJNaXU5Vcf49QUBG6ijVmmOU+UqzcZJgcSTLhJqDOF7ydSYt15Tg6UbpId7YoeVbC6oYg== + +"@babel/cli@^7.6.2": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" + integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== + dependencies: + commander "^4.0.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.1.8" + +"@babel/code-frame@7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" + integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== + dependencies: + browserslist "^4.8.5" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/compat-data@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" + integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== + dependencies: + browserslist "^4.11.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.5.5", "@babel/core@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.6.2", "@babel/core@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.7" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== + dependencies: + "@babel/types" "^7.8.7" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/generator@^7.9.0", "@babel/generator@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + dependencies: + "@babel/types" "^7.9.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" + integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-builder-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz#dee98d7d79cc1f003d80b76fe01c7f8945665ff6" + integrity sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ== + dependencies: + "@babel/types" "^7.8.3" + esutils "^2.0.0" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.7" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-compilation-targets@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" + integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== + dependencies: + "@babel/compat-data" "^7.9.6" + browserslist "^4.11.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" + integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.8.6" + lodash "^4.17.13" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@7.8.3", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/highlight@^7.0.0", "@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7", "@babel/parser@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== + +"@babel/parser@^7.9.0", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.4.0", "@babel/plugin-proposal-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116" + integrity sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-object-rest-spread@^7.5.5", "@babel/plugin-proposal-object-rest-spread@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-object-rest-spread@^7.6.2", "@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@7.8.3", "@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.5.0", "@babel/plugin-transform-destructuring@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-amd@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" + integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== + dependencies: + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + dependencies: + "@babel/helper-call-delegate" "^7.8.7" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz#c4f178b2aa588ecfa8d077ea80d4194ee77ed702" + integrity sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz#951e75a8af47f9f120db731be095d2b2c34920e0" + integrity sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.3.0", "@babel/plugin-transform-react-jsx@^7.9.4": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" + integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" + integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== + dependencies: + "@babel/helper-builder-react-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" + integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-runtime@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd" + integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.8.3": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda" + integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/polyfill@^7.7.0", "@babel/polyfill@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f" + integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + +"@babel/preset-env@^7.6.2", "@babel/preset-env@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" + integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== + dependencies: + "@babel/compat-data" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.6" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.6" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.7" + browserslist "^4.8.5" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== + dependencies: + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" + integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.8.3" + "@babel/plugin-transform-react-jsx-self" "^7.8.3" + "@babel/plugin-transform-react-jsx-source" "^7.8.3" + +"@babel/preset-react@^7.9.4": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" + integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.4" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-typescript@^7.6.0", "@babel/preset-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz#90af8690121beecd9a75d0cc26c6be39d1595d13" + integrity sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.8.3" + +"@babel/runtime-corejs2@^7.4.2": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.8.7.tgz#5c6afcb33ef12fa1f8db6b915ff6b5ecaf6afb11" + integrity sha512-R8zbPiv25S0pGfMqAr55dRRxWB8vUeo3wicI4g9PFVBKmsy/9wmQUV1AaYW/kxRHUhx42TTh6F0+QO+4pwfYWg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + +"@babel/runtime-corejs3@^7.8.3": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" + integrity sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.2.0", "@babel/runtime@^7.7.7", "@babel/runtime@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/standalone@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.9.6.tgz#7a5f82c6fa29959b12f708213be6de8ec0b79338" + integrity sha512-UE0vm/4vuwzGgGNY9wR78ft3DUcHvAU0o/esXas2qjUL8yHMAEc04OmLkb3dfkUwlqbQ4+vC1OLBzwhcoIqLsA== + +"@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.4.4", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@elastic/app-search-javascript@^7.3.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@elastic/app-search-javascript/-/app-search-javascript-7.6.0.tgz#5da75b6d60320fc70a608603130b0bc0c9f27d95" + integrity sha512-c1cZa8QlqWx5IA22G2DRkYsku+24b0p2E4kaRa5PlkGUX98Q33HDZLfRztylBZ81GeXgMaQvr4xx+nrzD0dwRA== + dependencies: + object-hash "^1.3.0" + +"@elastic/app-search-node@^7.3.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@elastic/app-search-node/-/app-search-node-7.6.0.tgz#43f394c9996848dc68b2dd093705d40b8857b6fd" + integrity sha512-wupxxjlOPdYaXTr6yL84yNmCS7nFftBcB/B4NuJpAPJEBvbPxQAM1AqPUrlKom/5++Z9coDRsbv8cGBo7zVkXg== + dependencies: + jsonwebtoken "^8.1.1" + request "^2.81.0" + +"@elastic/charts@^19.1.1": + version "19.1.1" + resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-19.1.1.tgz#8794ae7df470cf838e882322b2d973f923869b35" + integrity sha512-smoq6CYI28uvZloUtHTDYb0lOv8aYkmuWaUlKkvcq7Eylw+WJxAcZuS5LQzUMDV04HxDu0tuJGE1JeZGfRM/jg== + dependencies: + classnames "^2.2.6" + d3-array "^1.2.4" + d3-collection "^1.0.7" + d3-color "^1.4.0" + d3-scale "^1.0.7" + d3-shape "^1.3.4" + newtype-ts "^0.2.4" + path2d-polyfill "^0.4.2" + prop-types "^15.7.2" + re-reselect "^3.4.0" + react-redux "^7.1.0" + redux "^4.0.4" + reselect "^4.0.0" + resize-observer-polyfill "^1.5.1" + ts-debounce "^1.0.0" + utility-types "^3.10.0" + uuid "^3.3.2" + +"@elastic/datemath@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@elastic/datemath/-/datemath-5.0.2.tgz#1e62fe7137acd6ebcde9a794ef22b91820c9e6cf" + integrity sha512-MYU7KedGPMYu3ljgrO3tY8I8rD73lvBCltd78k5avDIv/6gMbuhKXsMhkEPbb9angs9hR/2ADk0QcGbVxUBXUw== + dependencies: + tslib "^1.9.3" + +"@elastic/eslint-config-kibana@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@elastic/eslint-config-kibana/-/eslint-config-kibana-0.15.0.tgz#a552793497cdfc1829c2f9b7cd7018eb008f1606" + integrity sha1-pVJ5NJfN/Bgpwvm3zXAY6wCPFgY= + +"@elastic/eui@^21.1.0": + version "21.1.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-21.1.0.tgz#f9a9edc6f682c1a17f8394827c12d7dc57bac7bf" + integrity sha512-U6y/OjM3qfgSZusTVrtpGbYhKXh9bRLqy89JAVo/qrAzzchKCIur9P+AasVF1UG/bUDQEkkmgpNGutbe/BWrJg== + dependencies: + "@types/chroma-js" "^2.0.0" + "@types/enzyme" "^3.1.13" + "@types/lodash" "^4.14.116" + "@types/numeral" "^0.0.25" + "@types/react-beautiful-dnd" "^10.1.0" + "@types/react-input-autosize" "^2.0.2" + "@types/react-virtualized" "^9.18.7" + chroma-js "^2.0.4" + classnames "^2.2.5" + highlight.js "^9.12.0" + html "^1.0.0" + keymirror "^0.1.1" + lodash "^4.17.11" + numeral "^2.0.6" + prop-types "^15.6.0" + react-ace "^7.0.5" + react-beautiful-dnd "^10.1.0" + react-focus-lock "^1.17.7" + react-input-autosize "^2.2.2" + react-is "~16.3.0" + react-virtualized "^9.21.2" + resize-observer-polyfill "^1.5.0" + tabbable "^3.0.0" + uuid "^3.1.0" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.1.1": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jimp/bmp@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.6.8.tgz#8abbfd9e26ba17a47fab311059ea9f7dd82005b6" + integrity sha512-uxVgSkI62uAzk5ZazYHEHBehow590WAkLKmDXLzkr/XP/Hv2Fx1T4DKwJ/15IY5ktq5VAhAUWGXTyd8KWFsx7w== + dependencies: + "@jimp/utils" "^0.6.8" + bmp-js "^0.1.0" + core-js "^2.5.7" + +"@jimp/core@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.6.8.tgz#6a41089792516f6e64a5302d12eb562aa7847c7b" + integrity sha512-JOFqBBcSNiDiMZJFr6OJqC6viXj5NVBQISua0eacoYvo4YJtTajOIxC4MqWyUmGrDpRMZBR8QhSsIOwsFrdROA== + dependencies: + "@jimp/utils" "^0.6.8" + any-base "^1.1.0" + buffer "^5.2.0" + core-js "^2.5.7" + exif-parser "^0.1.12" + file-type "^9.0.0" + load-bmfont "^1.3.1" + mkdirp "0.5.1" + phin "^2.9.1" + pixelmatch "^4.0.2" + tinycolor2 "^1.4.1" + +"@jimp/custom@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.6.8.tgz#0476d7b3f5da3121d98895a2e14f2899e602f2b6" + integrity sha512-FrYlzZRVXP2vuVwd7Nc2dlK+iZk4g6IaT1Ib8Z6vU5Kkwlt83FJIPJ2UUFABf3bF5big0wkk8ZUihWxE4Nzdng== + dependencies: + "@jimp/core" "^0.6.8" + core-js "^2.5.7" + +"@jimp/gif@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.6.8.tgz#848dd4e6e1a56ca2b3ce528969e44dfa99a53b14" + integrity sha512-yyOlujjQcgz9zkjM5ihZDEppn9d1brJ7jQHP5rAKmqep0G7FU1D0AKcV+Ql18RhuI/CgWs10wAVcrQpmLnu4Yw== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + omggif "^1.0.9" + +"@jimp/jpeg@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.6.8.tgz#4cad85a6d1e15759acb56bddef29aa3473859f2c" + integrity sha512-rGtXbYpFXAn471qLpTGvhbBMNHJo5KiufN+vC5AWyufntmkt5f0Ox2Cx4ijuBMDtirZchxbMLtrfGjznS4L/ew== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + jpeg-js "^0.3.4" + +"@jimp/plugin-blit@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.6.8.tgz#646ebb631f35afc28c1e8908524bc43d1e9afa3d" + integrity sha512-7Tl6YpKTSpvwQbnGNhsfX2zyl3jRVVopd276Y2hF2zpDz9Bycow7NdfNU/4Nx1jaf96X6uWOtSVINcQ7rGd47w== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-blur@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.6.8.tgz#7b753ae94f6099103f57c268c3b2679047eefe95" + integrity sha512-NpZCMKxXHLDQsX9zPlWtpMA660DQStY6/z8ZetyxCDbqrLe9YCXpeR4MNhdJdABIiwTm1W5FyFF4kp81PHJx3Q== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-color@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.6.8.tgz#4101cb1208879b331db6e43ea6b96eaf8dbaedbc" + integrity sha512-jjFyU0zNmGOH2rjzHuOMU4kaia0oo82s/7UYfn5h7OUkmUZTd6Do3ZSK1PiXA7KR+s4B76/Omm6Doh/0SGb7BQ== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + tinycolor2 "^1.4.1" + +"@jimp/plugin-contain@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.6.8.tgz#af95d33b63d0478943374ae15dd2607fc69cad14" + integrity sha512-p/P2wCXhAzbmEgXvGsvmxLmbz45feF6VpR4m9suPSOr8PC/i/XvTklTqYEUidYYAft4vHgsYJdS74HKSMnH8lw== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-cover@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.6.8.tgz#490e3186627a34d93cc015c4169bac9070d6ad17" + integrity sha512-2PvWgk+PJfRsfWDI1G8Fpjrsu0ZlpNyZxO2+fqWlVo6y/y2gP4v08FqvbkcqSjNlOu2IDWIFXpgyU0sTINWZLg== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-crop@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.6.8.tgz#ffec8951a2f3eccad1e3cff9afff5326bd980ce7" + integrity sha512-CbrcpWE2xxPK1n/JoTXzhRUhP4mO07mTWaSavenCg664oQl/9XCtL+A0FekuNHzIvn4myEqvkiTwN7FsbunS/Q== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-displace@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.6.8.tgz#89df05ab7daaff6befc190bb8ac54ec8d57e533b" + integrity sha512-RmV2bPxoPE6mrPxtYSPtHxm2cGwBQr5a2p+9gH6SPy+eUMrbGjbvjwKNfXWUYD0leML+Pt5XOmAS9pIROmuruQ== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-dither@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.6.8.tgz#17e5b9f56575a871e329fef8b388e614b92d84f8" + integrity sha512-x6V/qjxe+xypjpQm7GbiMNqci1EW5UizrcebOhHr8AHijOEqHd2hjXh5f6QIGfrkTFelc4/jzq1UyCsYntqz9Q== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-flip@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.6.8.tgz#153df0c677f79d4078bb9e4c1f2ac392b96dc3a1" + integrity sha512-4il6Da6G39s9MyWBEee4jztEOUGJ40E6OlPjkMrdpDNvge6hYEAB31BczTYBP/CEY74j4LDSoY5LbcU4kv06yA== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-gaussian@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.8.tgz#100abc7ae1f19fe9c09ed41625b475aae7c6093c" + integrity sha512-pVOblmjv7stZjsqloi4YzHVwAPXKGdNaHPhp4KP4vj41qtc6Hxd9z/+VWGYRTunMFac84gUToe0UKIXd6GhoKw== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-invert@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.6.8.tgz#f40bfaa3b592d21ff14ede0e49aabec88048cad0" + integrity sha512-11zuLiXDHr6tFv4U8aieXqNXQEKbDbSBG/h+X62gGTNFpyn8EVPpncHhOqrAFtZUaPibBqMFlNJ15SzwC7ExsQ== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-mask@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.6.8.tgz#e64405f7dacf0672bff74f3b95b724d9ac517f86" + integrity sha512-hZJ0OiKGJyv7hDSATwJDkunB1Ie80xJnONMgpUuUseteK45YeYNBOiZVUe8vum8QI1UwavgBzcvQ9u4fcgXc9g== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-normalize@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.6.8.tgz#a0180f2b8835e3638cdc5e057b44ac63f60db6ba" + integrity sha512-Q4oYhU+sSyTJI7pMZlg9/mYh68ujLfOxXzQGEXuw0sHGoGQs3B0Jw7jmzGa6pIS06Hup5hD2Zuh1ppvMdjJBfQ== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-print@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.6.8.tgz#66309549e01896473111e3a0ad2cee428638bd6e" + integrity sha512-2aokejGn4Drv1FesnZGqh5KEq0FQtR0drlmtyZrBH+r9cx7hh0Qgf4D1BOTDEgXkfSSngjGRjKKRW/fwOrVXYw== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + load-bmfont "^1.4.0" + +"@jimp/plugin-resize@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.6.8.tgz#c26d9a973f7eec51ad9018fcbbac1146f7a73aa0" + integrity sha512-27nPh8L1YWsxtfmV/+Ub5dOTpXyC0HMF2cu52RQSCYxr+Lm1+23dJF70AF1poUbUe+FWXphwuUxQzjBJza9UoA== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-rotate@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.6.8.tgz#2afda247984eeebed95c1bb1b13ccd3be5973299" + integrity sha512-GbjETvL05BDoLdszNUV4Y0yLkHf177MnqGqilA113LIvx9aD0FtUopGXYfRGVvmtTOTouoaGJUc+K6qngvKxww== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugin-scale@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.6.8.tgz#5de403345859bb0b30bf3e242dedd8ceb6ecb96c" + integrity sha512-GzIYWR/oCUK2jAwku23zt19V1ssaEU4pL0x2XsLNKuuJEU6DvEytJyTMXCE7OLG/MpDBQcQclJKHgiyQm5gIOQ== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + +"@jimp/plugins@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.6.8.tgz#5618170a986ced1ea795adcd9376122f2543b856" + integrity sha512-fMcTI72Vn/Lz6JftezTURmyP5ml/xGMe0Ljx2KRJ85IWyP33vDmGIUuutFiBEbh2+y7lRT+aTSmjs0QGa/xTmQ== + dependencies: + "@jimp/plugin-blit" "^0.6.8" + "@jimp/plugin-blur" "^0.6.8" + "@jimp/plugin-color" "^0.6.8" + "@jimp/plugin-contain" "^0.6.8" + "@jimp/plugin-cover" "^0.6.8" + "@jimp/plugin-crop" "^0.6.8" + "@jimp/plugin-displace" "^0.6.8" + "@jimp/plugin-dither" "^0.6.8" + "@jimp/plugin-flip" "^0.6.8" + "@jimp/plugin-gaussian" "^0.6.8" + "@jimp/plugin-invert" "^0.6.8" + "@jimp/plugin-mask" "^0.6.8" + "@jimp/plugin-normalize" "^0.6.8" + "@jimp/plugin-print" "^0.6.8" + "@jimp/plugin-resize" "^0.6.8" + "@jimp/plugin-rotate" "^0.6.8" + "@jimp/plugin-scale" "^0.6.8" + core-js "^2.5.7" + timm "^1.6.1" + +"@jimp/png@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.6.8.tgz#ee06cf078b381137ec7206c4bb1b4cfcbe15ca6f" + integrity sha512-JHHg/BZ7KDtHQrcG+a7fztw45rdf7okL/YwkN4qU5FH7Fcrp41nX5QnRviDtD9hN+GaNC7kvjvcqRAxW25qjew== + dependencies: + "@jimp/utils" "^0.6.8" + core-js "^2.5.7" + pngjs "^3.3.3" + +"@jimp/tiff@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.6.8.tgz#79bd22ed435edbe29d02a2c8c9bf829f988ebacc" + integrity sha512-iWHbxd+0IKWdJyJ0HhoJCGYmtjPBOusz1z1HT/DnpePs/Lo3TO4d9ALXqYfUkyG74ZK5jULZ69KLtwuhuJz1bg== + dependencies: + core-js "^2.5.7" + utif "^2.0.1" + +"@jimp/types@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.6.8.tgz#4510eb635cd00b201745d70e38f791748baa7075" + integrity sha512-vCZ/Cp2osy69VP21XOBACfHI5HeR60Rfd4Jidj4W73UL+HrFWOtyQiJ7hlToyu1vI5mR/NsUQpzyQvz56ADm5A== + dependencies: + "@jimp/bmp" "^0.6.8" + "@jimp/gif" "^0.6.8" + "@jimp/jpeg" "^0.6.8" + "@jimp/png" "^0.6.8" + "@jimp/tiff" "^0.6.8" + core-js "^2.5.7" + timm "^1.6.1" + +"@jimp/utils@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.6.8.tgz#09f794945631173567aa50f72ac28170de58a63d" + integrity sha512-7RDfxQ2C/rarNG9iso5vmnKQbcvlQjBIlF/p7/uYj72WeZgVCB+5t1fFBKJSU4WhniHX4jUMijK+wYGE3Y3bGw== + dependencies: + core-js "^2.5.7" + +"@loadable/component@^5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@loadable/component/-/component-5.12.0.tgz#34d056d15f53dc08d04e9203cad6867cf4f7306c" + integrity sha512-eDG7FPZ8tCFA/mqu2IrYV6eS+UxGBo21PwtEV9QpkpYrx25xKRXzJUm36yfQPK3o7jXu43xpPkwiU4mLWcjJlw== + dependencies: + "@babel/runtime" "^7.7.7" + hoist-non-react-statics "^3.3.1" + +"@lourd/load-script@^0.1.0": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@lourd/load-script/-/load-script-0.1.4.tgz#ebc491946ef66d6489aed908d758344de7605f00" + integrity sha512-9Jc8nS9AUYggv/zo8IrWtLo1UXALcpRIRBYiv/Ig0QIQp46Wu1ttB2ByOBYTDUy1sSh5byfhM8v1U9rjnHikOA== + +"@lourd/react-google-api@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@lourd/react-google-api/-/react-google-api-0.2.1.tgz#cedbcb43ad7e19176cd83bde27ceefbe16d22943" + integrity sha512-Cn7GaMZRN9gtQTNuRAUcFgsRNnfDBaTndrcYsGynL77VkGKY82TtJWBWruj+fuxPT57ODcNSk/kFCQcI1A6vgA== + dependencies: + "@lourd/load-script" "^0.1.0" + prop-types "^15.6.0" + react-broadcast "^0.7.0-rc.2" + +"@mdx-js/mdx@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.1.tgz#95d53da3bdb0cd9239097e411b5a41ad86dbd059" + integrity sha512-DLnHbYZGoXSzfIHKgEtsO4qP8029YbdyJvC746PwfPNrRyGciPsqgWmfz/nEXt/fg+UMBG/6/cZaZx/hvyxnyg== + dependencies: + "@babel/core" "7.9.0" + "@babel/plugin-syntax-jsx" "7.8.3" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "^1.6.1" + babel-plugin-apply-mdx-type-prop "^1.6.1" + babel-plugin-extract-import-names "^1.6.1" + camelcase-css "2.0.1" + detab "2.0.3" + hast-util-raw "5.0.2" + lodash.uniq "4.5.0" + mdast-util-to-hast "8.2.0" + remark-footnotes "1.0.0" + remark-mdx "^1.6.1" + remark-parse "8.0.2" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.0.0" + unist-builder "2.0.3" + unist-util-visit "2.0.2" + +"@mdx-js/react@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.1.tgz#46e56602c1f513452db2f1f4185f56dc60a4fcb7" + integrity sha512-jXBSWdWFPK2fs3johKb0hQFsf/x/C24XQYQwMhj8FxwlBgf7+NGATwXFs6pGkKd5/JfK9HXmbOcQ78MYoIZyxA== + +"@mdx-js/runtime@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@mdx-js/runtime/-/runtime-1.6.1.tgz#b7fbc3cc744ebe103af2f7d800c01524980f38f0" + integrity sha512-aqBheB4Qj/zj/YpfXoI2csQor4xSDgIzm1R8OgHXd6ePdZRxPLtwoQUgEHN/M40yq8QsRE+edvH5wlQeBXhJyw== + dependencies: + "@mdx-js/mdx" "^1.6.1" + "@mdx-js/react" "^1.6.1" + buble-jsx-only "^0.19.8" + +"@mdx-js/util@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.1.tgz#c1e8480844dfaeecde8b827d0e4bbf8793274659" + integrity sha512-A3TBBjg5iVo8S4TTG0VrW8G9YNLob4+M6rALKjY8Sxr9zPExWQ7iTPUSvJVE7YhF9E08EQMubx1vRal3jtpJ9Q== + +"@mikaelkristiansson/domready@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@mikaelkristiansson/domready/-/domready-1.0.10.tgz#f6d69866c0857664e70690d7a0bfedb72143adb5" + integrity sha512-6cDuZeKSCSJ1KvfEQ25Y8OXUjqDJZ+HgUs6dhASWbAX8fxVraTfPsSeRe2bN+4QJDsgUaXaMWBYfRomCr04GGg== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nivo/annotations@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/annotations/-/annotations-0.61.0.tgz#f09fc99f018e0d0c39f01ed9447e1a2cc0c5e6df" + integrity sha512-i2JKYeMEPC+zwgN/p+hVRWUJ4aee+kE8BfMzCLt1/a+rsfT+v2v5kj12zx072teoaQt53lOi1GdV2lEYA6HJpg== + dependencies: + "@nivo/colors" "0.61.0" + "@nivo/core" "0.61.0" + lodash "^4.17.11" + react-motion "^0.5.2" + +"@nivo/axes@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/axes/-/axes-0.61.0.tgz#f22852b56f02d99867eb27fa3be349a75f749cbb" + integrity sha512-U0rHIYNnwt03dFFBz0aosfd5nFIRVD1Wff5DwVeM7PouBZM3AsLVWeLlUWLWOmg+BHftqhbOGTOoZN2SjU7bwA== + dependencies: + "@nivo/core" "0.61.0" + d3-format "^1.3.2" + d3-time "^1.0.11" + d3-time-format "^2.1.3" + lodash "^4.17.11" + react-motion "^0.5.2" + +"@nivo/colors@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/colors/-/colors-0.61.0.tgz#5af2a6d8b1d22c786950cc9fb07c216a80a541ff" + integrity sha512-yeb5YsQDoN7D5DbBIhHTnVn0bX+4ObNVGyJAepSn64zNPiskO3/o1FnQw70aIkN4O7BDXb/vVPrftq6wSwQtvQ== + dependencies: + d3-color "^1.2.3" + d3-scale "^3.0.0" + d3-scale-chromatic "^1.3.3" + lodash.get "^4.4.2" + lodash.isplainobject "^4.0.6" + react-motion "^0.5.2" + +"@nivo/core@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/core/-/core-0.61.0.tgz#66581a0e2dc4f8f802bd0f1515f1f2269b0595e0" + integrity sha512-7DGsTW12vfUvMIr9jl28KZaJMJqMMhEJi1lW1R2TPMTg+qSG01v6tqMtcEwUp4bdAdr3n57ytLWSgqKWXkwjvw== + dependencies: + "@nivo/tooltip" "0.61.0" + d3-color "^1.2.3" + d3-format "^1.3.2" + d3-hierarchy "^1.1.8" + d3-interpolate "^1.3.2" + d3-scale "^3.0.0" + d3-scale-chromatic "^1.3.3" + d3-shape "^1.3.5" + d3-time-format "^2.1.3" + lodash "^4.17.11" + react-measure "^2.2.4" + react-motion "^0.5.2" + recompose "^0.30.0" + +"@nivo/legends@0.61.1": + version "0.61.1" + resolved "https://registry.yarnpkg.com/@nivo/legends/-/legends-0.61.1.tgz#54ac123b25449e7663067b3e019c7d3a9429a6f9" + integrity sha512-bKVXffFwTKGySZRUf6sdVzWUb5jjGffuvRczs0giQCu8OUgeJIi0IOOyYhHtww+rTVGIKAi0xPGQTQnF4kpufA== + dependencies: + "@nivo/core" "0.61.0" + lodash "^4.17.11" + recompose "^0.30.0" + +"@nivo/line@^0.61.1": + version "0.61.1" + resolved "https://registry.yarnpkg.com/@nivo/line/-/line-0.61.1.tgz#7e857c4abababef3e019211deff9feb347cec788" + integrity sha512-PZFGgcj+IlDtZG6kTdBrGJ5cJvs1w5kaAI86IaH5AXJ0MQqVIZYWgbXdf5Vg6Hv2ouLmwNwONA/ORACKVkG+YA== + dependencies: + "@nivo/annotations" "0.61.0" + "@nivo/axes" "0.61.0" + "@nivo/colors" "0.61.0" + "@nivo/core" "0.61.0" + "@nivo/legends" "0.61.1" + "@nivo/scales" "0.61.0" + "@nivo/tooltip" "0.61.0" + "@nivo/voronoi" "0.61.0" + d3-shape "^1.3.5" + lodash "^4.17.11" + react-motion "^0.5.2" + +"@nivo/scales@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/scales/-/scales-0.61.0.tgz#48bcc94941271f1f23c353f1da1ee4da1af981ef" + integrity sha512-7MoxxecMDvpK9L0Py/drEQxG/4YAzo9KBvLzo3/KjInc1VEscpDkpVSSN5tmg1qbQE3WCrziec4JuH9q1V/Q7g== + dependencies: + d3-scale "^3.0.0" + d3-time-format "^2.1.3" + lodash "^4.17.11" + +"@nivo/tooltip@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/tooltip/-/tooltip-0.61.0.tgz#bf8b06a18f41fc9072e3f2d9591ebbb9b45c2a54" + integrity sha512-CqEJ4v1jSikZ3fmuSJVb1UYF8fuCo/c7JFB+LsNH9X01IERSufO3tSNBTzJ3JugCminQpbo6/R7oBhNwZFqSxw== + dependencies: + "@nivo/core" "0.61.0" + react-measure "^2.2.4" + react-motion "^0.5.2" + +"@nivo/voronoi@0.61.0": + version "0.61.0" + resolved "https://registry.yarnpkg.com/@nivo/voronoi/-/voronoi-0.61.0.tgz#977da00f7805d57f4d315116785503c611570ef5" + integrity sha512-VVB7BW8GX8Gq9kTf/L52HrCD//4PAT6RTeDwb4N8BpSNfyfmBXacU9U9RMK7HAJjxICzEuxam75/oTCjX6iVBg== + dependencies: + "@nivo/core" "0.61.0" + d3-delaunay "^5.1.1" + d3-scale "^3.0.0" + recompose "^0.30.0" + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@pieh/friendly-errors-webpack-plugin@1.7.0-chalk-2": + version "1.7.0-chalk-2" + resolved "https://registry.yarnpkg.com/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz#2e9da9d3ade9d18d013333eb408c457d04eabac0" + integrity sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw== + dependencies: + chalk "^2.4.2" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + strip-ansi "^3" + +"@pmmmwh/react-refresh-webpack-plugin@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.2.0.tgz#e2a684d430f74ad6465680d9a5869f52f307ec1e" + integrity sha512-rjdNzcWroULJeD/Y0+eETy9LhM7c5tbPF+wqT5G680rwDkh3iothIPEqGAuEE2WJlXEaAq293aO6ySzsIU518Q== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.4" + html-entities "^1.2.1" + lodash.debounce "^4.0.8" + react-dev-utils "^9.1.0" + +"@reach/router@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.3.tgz#58162860dce6c9449d49be86b0561b5ef46d80db" + integrity sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw== + dependencies: + create-react-context "0.3.0" + invariant "^2.2.3" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + dependencies: + any-observable "^0.3.0" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@types/cheerio@*": + version "0.22.16" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.16.tgz#c748a97b8a6f781b04bbda4a552e11b35bcc77e4" + integrity sha512-bSbnU/D4yzFdzLpp3+rcDj0aQQMIRUBNJU7azPxdqMpnexjUSvGJyDuOBQBHeOZh1mMKgsJm6Dy+LLh80Ew4tQ== + dependencies: + "@types/node" "*" + +"@types/chroma-js@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.0.0.tgz#b0fc98c8625d963f14e8138e0a7961103303ab22" + integrity sha512-iomunXsXjDxhm2y1OeJt8NwmgC7RyNkPAOddlYVGsbGoX8+1jYt84SG4/tf6RWcwzROLx1kPXPE95by1s+ebIg== + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/configstore@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" + integrity sha1-zR6FU2M60xhcPy8jns/10mQ+krY= + +"@types/debug@^0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" + integrity sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ== + +"@types/enzyme@^3.1.13", "@types/enzyme@^3.10.3": + version "3.10.5" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.5.tgz#fe7eeba3550369eed20e7fb565bfb74eec44f1f0" + integrity sha512-R+phe509UuUYy9Tk0YlSbipRpfVtIzb/9BHn5pTEtjJTF5LXvUjrIQcZvNyANNEyFrd2YGs196PniNT1fgvOQA== + dependencies: + "@types/cheerio" "*" + "@types/react" "*" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/get-port@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-3.2.0.tgz#f9e0a11443cc21336470185eae3dfba4495d29bc" + integrity sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q== + +"@types/glob@*", "@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/glob@^5.0.34": + version "5.0.36" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.36.tgz#0c80a9c8664fc7d19781de229f287077fd622cb2" + integrity sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/history@*": + version "4.7.5" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.5.tgz#527d20ef68571a4af02ed74350164e7a67544860" + integrity sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/lodash@^4.14.116", "@types/lodash@^4.14.92": + version "4.14.149" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" + integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "13.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" + integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + +"@types/node@>=6": + version "13.13.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" + integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA== + +"@types/node@^12.7.7": + version "12.12.30" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.30.tgz#3501e6f09b954de9c404671cefdbcc5d9d7c45f6" + integrity sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg== + +"@types/node@^8.5.7": + version "8.10.59" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.59.tgz#9e34261f30183f9777017a13d185dfac6b899e04" + integrity sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/numeral@^0.0.25": + version "0.0.25" + resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.25.tgz#b6f55062827a4787fe4ab151cf3412a468e65271" + integrity sha512-ShHzHkYD+Ldw3eyttptCpUhF1/mkInWwasQkCNXZHOsJMJ/UMa8wXrxSrTJaVk0r4pLK/VnESVM0wFsfQzNEKQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/reach__router@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.0.tgz#4c05a947ccecca05c72bb335a0f7bb43fec12446" + integrity sha512-0aL79bFPJzJOJOOMZm2301ErQVaveBdpW88uuavXymUlcYIAOCmI1ujJ2XLH6Mzn76O94eQCHIl1FDzNNKJCYA== + dependencies: + "@types/history" "*" + "@types/react" "*" + +"@types/react-beautiful-dnd@^10.1.0": + version "10.1.3" + resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-10.1.3.tgz#a558eba3f807582a2e1d2db1bcca975525e7c331" + integrity sha512-VTbrLV4vIBgTRl6AIpY4vvZGHb6vEQypNAdmCG8+OZ0uvwEmPccRY5a4Qxvn4EgKi7wE4dBdCeWYrniuJ75R0A== + dependencies: + "@types/react" "*" + +"@types/react-dom@^16.9.5": + version "16.9.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" + integrity sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg== + dependencies: + "@types/react" "*" + +"@types/react-input-autosize@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/react-input-autosize/-/react-input-autosize-2.0.2.tgz#6ccdfb100c21b6096c1a04c3c3fac196b0ce61c1" + integrity sha512-QzewaD5kog7c6w5e3dretb+50oM8RDdDvVumQKCtPjI6VHyR8lA/HxCiTrv5l9Vgbi4NCitYuix/NorOevlrng== + dependencies: + "@types/react" "*" + +"@types/react-virtualized@^9.18.7", "@types/react-virtualized@^9.21.2": + version "9.21.8" + resolved "https://registry.yarnpkg.com/@types/react-virtualized/-/react-virtualized-9.21.8.tgz#dc0150a75fd6e42f33729886463ece04d03367ea" + integrity sha512-7fZoA0Azd2jLIE9XC37fMZgMqaJe3o3pfzGjvrzphoKjBCdT4oNl6wikvo4dDMESDnpkZ8DvVTc7aSe4DW86Ew== + dependencies: + "@types/prop-types" "*" + "@types/react" "*" + +"@types/react@*", "@types/react@^16.9.23": + version "16.9.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.23.tgz#1a66c6d468ba11a8943ad958a8cb3e737568271c" + integrity sha512-SsGVT4E7L2wLN3tPYLiF20hmZTPGuzaayVunfgXzUn1x4uHVsKH6QDJQ/TdpHqwsTLd4CwrmQ2vOgxN7gE24gw== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/rimraf@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.3.tgz#0199a46af106729ba14213fda7b981278d8c84f2" + integrity sha512-dZfyfL/u9l/oi984hEXdmAjX3JHry7TLWw43u1HQ8HhPv6KtfxnrZ3T/bleJ0GEvnk9t5sM7eePkgMqz3yBcGg== + dependencies: + "@types/glob" "*" + "@types/node" "*" + +"@types/tmp@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.33.tgz#1073c4bc824754ae3d10cfab88ab0237ba964e4d" + integrity sha1-EHPEvIJHVK49EM+riKsCN7qWTk0= + +"@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^15.0.0": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yoga-layout@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.1.tgz#6c00e4a151a9a529397d580e2cf6f3947a42a928" + integrity sha512-OpfgQXWLZn5Dl7mOd8dBNcV8NywXbYYoHjUpa64vJ/RQABaxMzJ5bVicKLGIvIiMnQPtPgKNgXb5jkv9fkOQtw== + +"@types/zen-observable@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" + integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== + +"@typescript-eslint/eslint-plugin@^2.0.0", "@typescript-eslint/eslint-plugin@^2.23.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" + integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== + dependencies: + "@typescript-eslint/experimental-utils" "2.24.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" + integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^2.0.0", "@typescript-eslint/parser@^2.23.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" + integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.24.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" + integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + +"@urql/core@^1.11.0": + version "1.11.7" + resolved "https://registry.yarnpkg.com/@urql/core/-/core-1.11.7.tgz#ff0c7b613c2a4b2a76c462e1d65b2472142fe8ef" + integrity sha512-0LGOfohIoCmBf66QEV8pdwehJUZkViGZLmwPoHwcZUx1ONgKsGTzjdNBdNnvCzfuaRLlsXj8r7GmO5M6oVKjsg== + dependencies: + wonka "^4.0.10" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@wry/context@^0.4.0": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" + integrity sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag== + dependencies: + "@types/node" ">=6" + tslib "^1.9.3" + +"@wry/equality@^0.1.2", "@wry/equality@^0.1.9": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" + integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== + dependencies: + tslib "^1.9.3" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + +acorn-jsx@^5.0.1, acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn@^6.1.1, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +acorn@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" + integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + +address@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + 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" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7, ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + +any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apollo-boost@^0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.4.7.tgz#b0680ab0893e3f8b1ab1058dcfa2b00cb6440d79" + integrity sha512-jfc3aqO0vpCV+W662EOG5gq4AH94yIsvSgAUuDvS3o/Z+8Joqn4zGC9CgLCDHusK30mFgtsEgwEe0pZoedohsQ== + dependencies: + apollo-cache "^1.3.4" + apollo-cache-inmemory "^1.6.5" + apollo-client "^2.6.7" + apollo-link "^1.0.6" + apollo-link-error "^1.0.3" + apollo-link-http "^1.3.1" + graphql-tag "^2.4.2" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +apollo-cache-inmemory@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.5.tgz#2ccaa3827686f6ed7fb634203dbf2b8d7015856a" + integrity sha512-koB76JUDJaycfejHmrXBbWIN9pRKM0Z9CJGQcBzIOtmte1JhEBSuzsOUu7NQgiXKYI4iGoMREcnaWffsosZynA== + dependencies: + apollo-cache "^1.3.4" + apollo-utilities "^1.3.3" + optimism "^0.10.0" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +apollo-cache@1.3.4, apollo-cache@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.4.tgz#0c9f63c793e1cd6e34c450f7668e77aff58c9a42" + integrity sha512-7X5aGbqaOWYG+SSkCzJNHTz2ZKDcyRwtmvW4mGVLRqdQs+HxfXS4dUS2CcwrAj449se6tZ6NLUMnjko4KMt3KA== + dependencies: + apollo-utilities "^1.3.3" + tslib "^1.10.0" + +apollo-client@^2.6.7, apollo-client@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.8.tgz#01cebc18692abf90c6b3806414e081696b0fa537" + integrity sha512-0zvJtAcONiozpa5z5zgou83iEKkBaXhhSSXJebFHRXs100SecDojyUWKjwTtBPn9HbM6o5xrvC5mo9VQ5fgAjw== + dependencies: + "@types/zen-observable" "^0.8.0" + apollo-cache "1.3.4" + apollo-link "^1.0.0" + apollo-utilities "1.3.3" + symbol-observable "^1.0.2" + ts-invariant "^0.4.0" + tslib "^1.10.0" + zen-observable "^0.8.0" + +apollo-link-error@^1.0.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.13.tgz#c1a1bb876ffe380802c8df0506a32c33aad284cd" + integrity sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg== + dependencies: + apollo-link "^1.2.14" + apollo-link-http-common "^0.2.16" + tslib "^1.9.3" + +apollo-link-http-common@^0.2.16: + version "0.2.16" + resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" + integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== + dependencies: + apollo-link "^1.2.14" + ts-invariant "^0.4.0" + tslib "^1.9.3" + +apollo-link-http@^1.3.1: + version "1.5.17" + resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba" + integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== + dependencies: + apollo-link "^1.2.14" + apollo-link-http-common "^0.2.16" + tslib "^1.9.3" + +apollo-link-ws@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz#dfad44121f8445c6d7b7f8101a1b24813ba008ed" + integrity sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw== + dependencies: + apollo-link "^1.2.14" + tslib "^1.9.3" + +apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" + integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== + dependencies: + apollo-utilities "^1.3.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + zen-observable-ts "^0.8.21" + +apollo-utilities@1.3.3, apollo-utilities@^1.3.0, apollo-utilities@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.3.tgz#f1854715a7be80cd810bc3ac95df085815c0787c" + integrity sha512-F14aX2R/fKNYMvhuP2t9GD9fggID7zp5I96MF5QeKYWDWTrkRdHRp4+SVfXUVN+cXOaB/IebfvRtzPf25CM0zw== + dependencies: + "@wry/equality" "^0.1.2" + fast-json-stable-stringify "^2.0.0" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +application-config-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f" + integrity sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8= + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arch@^2.1.0, arch@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" + integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= + dependencies: + file-type "^4.2.0" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-rotate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/arr-rotate/-/arr-rotate-1.0.0.tgz#c11877d06a0a42beb39ab8956a06779d9b71d248" + integrity sha512-yOzOZcR9Tn7enTF66bqKorGGH0F36vcPaSWg8fO0c0UYb3LX3VMXj5ZxEqQLNOecAhlRJ7wYZja5i4jTlnbIfQ== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.fill@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array.prototype.fill/-/array.prototype.fill-1.0.2.tgz#ab33207f21d57d1ab2f7f0d1cf122d3419c38ef5" + integrity sha1-qzMgfyHVfRqy9/DRzxItNBnDjvU= + +array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.6.1, async@^2.6.2, async@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +auto-bind@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== + +autoprefixer@^9.7.4: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +axobject-query@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== + +babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-loader@^8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-add-module-exports@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.3.3.tgz#b9f7c0a93b989170dce07c3e97071a905a13fc29" + integrity sha512-hC37mm7aAdEb1n8SgggG8a1QuhZapsY/XLCi4ETSH6AVjXBCWEa50CXlOsAMPPWLnSx5Ns6mzz39uvuseh0Xjg== + optionalDependencies: + chokidar "^2.0.4" + +babel-plugin-apply-mdx-type-prop@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.1.tgz#7eaf057300f91e2dbce3142001131f578605c843" + integrity sha512-chjmLo1x7fCpDRICGUlbkwf2E6sMVG9jjG6PtPBWnQfMEjgV03Gh0jSVGbZJsEUxcMqOpHSsIXvPz1sYip6X3g== + dependencies: + "@babel/helper-plugin-utils" "7.8.3" + "@mdx-js/util" "^1.6.1" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-extract-import-names@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.1.tgz#fc913f9fdb1aa1590ec96269a03c1ce98e8b76b1" + integrity sha512-u0uRrPyygx4RlNva1aqz7DM9UBpsQJQZ4NyakHVJF18s73H/iiyXuc+X7k+9tHeN0WKLsohQUGzGLli6z5a0Zw== + dependencies: + "@babel/helper-plugin-utils" "7.8.3" + +babel-plugin-macros@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-remove-graphql-queries@^2.7.26: + version "2.7.26" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.7.26.tgz#81c8a24bb244798df12437a0aa92e496d673acc9" + integrity sha512-W54KrgluCcMCLq9lCtZBYzmG3Q4X0zN+mE4RNigbZhrXA6oj54Jz2tKrSW3eW3Sw3TeGsT4oGSQd8JIWyKIhqw== + +babel-plugin-remove-graphql-queries@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.0.tgz#3976cf639f77835b67d73a4b45e4c56727c4aeee" + integrity sha512-lvunFJ/JPhQHh5nOGepg1V5aX4zmbBgrd7qjlBObvQHF7Enz0yh6PznKnwtIX54i+bMOrWPUjCZUPXg3Xs+FLQ== + +babel-plugin-remove-graphql-queries@^2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.1.tgz#098910dc9f2da62b7bf3feec0b169558cbb0755a" + integrity sha512-Ua41OqiQ0yUi/9ZvbdhCKCkiCAdwCSVxtf5umV1scD6mMYd70eIA9or3M2nxhqHJ2leSRCYdyu771seEICkC3Q== + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-gatsby@^0.2.36: + version "0.2.36" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.2.36.tgz#cce0f77be03f7d411a890c4c9c35fa2f42073db6" + integrity sha512-vmqN6ht4B28dHlK7Qsau3JseHwTEkLjf2QkUcUKlYCuVk7skZkbN2B6O8QeJQTQ30V/6uUKiNMU/U0nc0RYMNQ== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/preset-env" "^7.8.7" + "@babel/preset-react" "^7.8.3" + "@babel/runtime" "^7.8.7" + babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-macros "^2.8.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + gatsby-core-utils "^1.0.34" + +babel-preset-gatsby@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.4.2.tgz#54869c5d5df8e3fb911f93d041cab2ebf424d252" + integrity sha512-PegbKTUBGCkDqwI68uF/rKrHNJ2ZP/WYiSgVa+xmseywqRtrw03kKIcmzM/j3jAOVo/efVW545KKzd2wPc9wjw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.9.6" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/preset-env" "^7.9.6" + "@babel/preset-react" "^7.9.4" + "@babel/runtime" "^7.9.6" + babel-plugin-dynamic-import-node "^2.3.3" + babel-plugin-macros "^2.8.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + gatsby-core-utils "^1.2.2" + +babel-runtime@^6.23.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backo2@1.0.2, backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base64id@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +better-opn@1.0.0, better-opn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-1.0.0.tgz#0454e4bb9115c6a9e4e5744417dd9c97fb9fce41" + integrity sha512-q3eO2se4sFbTERB1dFBDdjTiIIpRohMErpwBX21lhPvmgmQNNrcQj0zbWRhMREDesJvyod9kxBS3kOtdAvkB/A== + dependencies: + open "^6.4.0" + +better-queue-memory@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/better-queue-memory/-/better-queue-memory-1.0.4.tgz#f390d6b30bb3b36aaf2ce52b37a483e8a7a81a22" + integrity sha512-SWg5wFIShYffEmJpI6LgbL8/3Dqhku7xI1oEiy6FroP9DbcZlG0ZDjxvPdP9t7hTGW40IpIcC6zVoGT1oxjOuA== + +better-queue@^3.8.10: + version "3.8.10" + resolved "https://registry.yarnpkg.com/better-queue/-/better-queue-3.8.10.tgz#1c93b9ec4cb3d1b72eb91d0efcb84fc80e8c6835" + integrity sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA== + dependencies: + better-queue-memory "^1.0.1" + node-eta "^0.9.0" + uuid "^3.0.0" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +bin-build@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== + dependencies: + decompress "^4.0.0" + download "^6.2.2" + execa "^0.7.0" + p-map-series "^1.0.0" + tempfile "^2.0.0" + +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + +bin-version-check@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" + integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== + dependencies: + bin-version "^3.0.0" + semver "^5.6.0" + semver-truncate "^1.1.2" + +bin-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839" + integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== + dependencies: + execa "^1.0.0" + find-versions "^3.0.0" + +bin-wrapper@^4.0.0, bin-wrapper@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" + integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== + dependencies: + bin-check "^4.1.0" + bin-version-check "^4.0.0" + download "^7.1.0" + import-lazy "^3.1.0" + os-filter-obj "^2.0.0" + pify "^4.0.1" + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bl@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.1.tgz#8c9b4fb754e80cc86463077722be7b88b4af3f42" + integrity sha512-FL/TdvchukRCuWVxT0YMO/7+L5TNeNrVFvRU2IY63aUyv9mpt8splf2NEr6qXtPo5fya5a66YohQKvGNmLrWNA== + dependencies: + readable-stream "^3.4.0" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.5, bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bmp-js@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" + integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + 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" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" + integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^2.4.2" + cli-boxes "^2.2.0" + string-width "^3.0.0" + term-size "^1.2.0" + type-fest "^0.3.0" + widest-line "^2.0.0" + +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" + integrity sha1-SJb8ydVE7vRfS7dmDbMg07N5/lg= + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + 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" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + 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" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" + integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== + dependencies: + caniuse-lite "^1.0.30000989" + electron-to-chromium "^1.3.247" + node-releases "^1.1.29" + +browserslist@^4.0.0, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" + integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== + dependencies: + caniuse-lite "^1.0.30001030" + electron-to-chromium "^1.3.363" + node-releases "^1.1.50" + +browserslist@^4.11.1: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== + dependencies: + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" + node-releases "^1.1.53" + pkg-up "^2.0.0" + +buble-jsx-only@^0.19.8: + version "0.19.8" + resolved "https://registry.yarnpkg.com/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz#6e3524aa0f1c523de32496ac9aceb9cc2b493867" + integrity sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA== + dependencies: + acorn "^6.1.1" + acorn-dynamic-import "^4.0.0" + acorn-jsx "^5.0.1" + chalk "^2.4.2" + magic-string "^0.25.3" + minimist "^1.2.0" + regexpu-core "^4.5.4" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.2.0, buffer@^5.2.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" + integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-modules@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-manager-fs-hash@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.7.tgz#297f34b9c1a2aaec7b526e7ae0742c4e3fae4888" + integrity sha512-7X+FPItAJf1tKKqJx6ljDJQc0fgSR5B+KPxFQLj+vYSL4q9XdrCbZldgsNb6wueRuIooj01wt0FubB08zaefRg== + dependencies: + es6-promisify "^6.0.0" + lockfile "^1.0.4" + +cache-manager@^2.11.1: + version "2.11.1" + resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.11.1.tgz#212e8c3db15288af653b029a1d9fe12f1fd9df61" + integrity sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow== + dependencies: + async "1.5.2" + lodash.clonedeep "4.5.0" + lru-cache "4.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + +caniuse-lite@^1.0.30001043: + version "1.0.30001048" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e" + integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +caw@^2.0.0, caw@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + +ccount@^1.0.0, ccount@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-emitter@^0.1.2: + version "0.1.6" + resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" + integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= + +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.1" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +chokidar@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1, chownr@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chroma-js@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.1.0.tgz#c0be48a21fe797ef8965608c1c4f911ef2da49d5" + integrity sha512-uiRdh4ZZy+UTPSrAdp8hqEdVb1EllLtTHOt5TMaOjJUvi+O54/83Fc5K2ld1P+TJX+dw5B+8/sCgzI6eaur/lg== + dependencies: + cross-env "^6.0.3" + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@2.0.0, ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cli-table3@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +clipboardy@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.2.0.tgz#681e2af495924bcaeed159db3287ef5a5f4d2ee1" + integrity sha512-9ry9nC3VFULNmoEIqvuRwCIQ9M7wjnm4O+yvk7xkmhR+7FAUWaeX751oeYJbORg0h0zmqW1EVDoZK8f7yapwbg== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + +clipboardy@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@1.0.2, clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clsx@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702" + integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0, color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colorbrewer@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/colorbrewer/-/colorbrewer-1.3.0.tgz#1d7e92a6277e42dc56377911bbd867bdbcb2ff7d" + integrity sha512-AzVPpWa+fuO/qY8LxPQjej6F49Lb2Cl+7U9YhPn6y4/SOY6u/EZiXUc7qHzRb6i6fWPStCUdEaU2731QyQKWjg== + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +command-exists@^1.2.4: + version "1.2.8" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" + integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== + +commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" + +common-tags@^1.4.0, common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.4.7, concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +configstore@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" + integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3, content-disposition@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@^1.0.4, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-hrtime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz#62c7593f5809ca10be8da858a6d2f702bcda00aa" + integrity sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA== + +convert-source-map@^1.1.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copyfiles@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.2.0.tgz#d9fc6c06f299337fb7eeb7ea5887e9d7188d9d47" + integrity sha512-iJbHJI+8OKqsq+4JF0rqgRkZzo++jqO6Wf4FUU1JM41cJF6JcY5968XyF4tm3Kkm7ZOMrqlljdm8N9oyY5raGw== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^0.5.1" + noms "0.0.0" + through2 "^2.0.1" + yargs "^13.2.4" + +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7, core-js@^2.6.11, core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + 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" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + 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" + +create-react-context@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" + integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== + dependencies: + gud "^1.0.0" + warning "^4.0.3" + +cross-env@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.3.tgz#4256b71e49b3a40637a0ce70768a6ef5c72ae941" + integrity sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag== + dependencies: + cross-spawn "^7.0.0" + +cross-fetch@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" + integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM= + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + +cross-spawn@5.1.0, cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + 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" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-box-model@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.0.tgz#3a26377b4162b3200d2ede4b064ec5b6a75186d0" + integrity sha512-lri0br+jSNV0kkkiGEp9y9y3Njq2PmpqbeGWRFQJuZteZzY9iC9GZhQ8Y4WpPwM/2YocjHePxy14igJY7YKzkA== + dependencies: + tiny-invariant "^1.0.6" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash "^4.17.11" + postcss "^6.0.23" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0, css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz#11e5e27c9a48d90284f22d45061c303d7a25ad87" + integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + regexpu-core "^4.6.0" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +csstype@^2.2.0, csstype@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098" + integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cwebp-bin@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-5.1.0.tgz#d5bea87c127358558e7bf7a90a6d440d42dcb074" + integrity sha512-BsPKStaNr98zfxwejWWLIGELbPERULJoD2v5ijvpeutSAGsegX7gmABgnkRK7MUucCPROXXfaPqkLAwI509JzA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.1" + logalot "^2.1.0" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +"d3-array@1.2.0 - 2": + version "2.4.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.4.0.tgz#87f8b9ad11088769c82b5ea846bcb1cc9393f242" + integrity sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw== + +d3-array@^1.2.0, d3-array@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-axis@^1.0.8: + version "1.0.12" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" + integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== + +d3-collection@1, d3-collection@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1, d3-color@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.0.tgz#89c45a995ed773b13314f06460df26d60ba0ecaf" + integrity sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg== + +d3-color@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +d3-delaunay@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-5.2.1.tgz#0c4b280eb00194986ac4a3df9c81d32bf216cb36" + integrity sha512-ZZdeJl6cKRyqYVFYK+/meXvWIrAvZsZTD7WSxl4OPXCmuXNgDyACAClAJHD63zL25TA+IJGURUNO7rFseNFCYw== + dependencies: + delaunator "4" + +d3-dispatch@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== + +d3-ease@1, d3-ease@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" + integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== + +d3-format@1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.3.tgz#4e8eb4dff3fdcb891a8489ec6e698601c41b96f1" + integrity sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ== + +d3-format@^1.2.0, d3-format@^1.3.2: + version "1.4.4" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" + integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== + +d3-hierarchy@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +d3-interpolate@1, d3-interpolate@^1.1.5, d3-interpolate@^1.2.0, d3-interpolate@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-scale-chromatic@^1.1.1, d3-scale-chromatic@^1.3.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" + integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== + dependencies: + d3-color "1" + d3-interpolate "1" + +d3-scale@^1.0.6, d3-scale@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" + integrity sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-color "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-scale@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.1.tgz#da1684adce7261b4bc7a76fe193d887f0e909e69" + integrity sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA== + dependencies: + d3-array "1.2.0 - 2" + d3-format "1" + d3-interpolate "^1.2.0" + d3-time "1" + d3-time-format "2" + +d3-selection-multi@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d3-selection-multi/-/d3-selection-multi-1.0.1.tgz#cd6c25413d04a2cb97470e786f2cd877f3e34f58" + integrity sha1-zWwlQT0EosuXRw54byzYd/PjT1g= + dependencies: + d3-selection "1" + d3-transition "1" + +d3-selection@1, d3-selection@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" + integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== + +d3-shape@^1.2.0, d3-shape@^1.3.4, d3-shape@^1.3.5: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-time-format@2, d3-time-format@^2.0.5, d3-time-format@^2.1.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== + dependencies: + d3-time "1" + +d3-time@1, d3-time@^1.0.11, d3-time@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + +d3-timer@1: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + +d3-transition@1, d3-transition@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" + integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== + dependencies: + d3-color "1" + d3-dispatch "1" + d3-ease "1" + d3-interpolate "1" + d3-selection "^1.1.0" + d3-timer "1" + +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +date-fns@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.0.tgz#ec2b44977465b9dcb370021d5e6c019b19f36d06" + integrity sha512-8P1cDi8ebZyDxUyUprBXwidoEtiQAawYPGvpfb+Dg0G6JrQ+VozwOmm91xYC0vAv1+0VmLehEPb+isg4BGUFfA== + +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0, decompress@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1, deep-equal@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +del@^5.0.0, del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + +delaunator@4: + version "4.0.1" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957" + integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detab@2.0.3, detab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" + integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== + dependencies: + repeat-string "^1.5.4" + +detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-1.0.3.tgz#e97b1003877d70c09af1af35bfadff168de4920d" + integrity sha1-6XsQA4d9cMCa8a81v63/Fo3kkg0= + dependencies: + get-stdin "^4.0.1" + minimist "^1.1.0" + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.3.tgz#a4d2f061d757a034ecf37c514260a98750f2b131" + integrity sha1-pNLwYddXoDTs83xRQmCph1DysTE= + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +devcert@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devcert/-/devcert-1.1.0.tgz#255508c20dd21045e3020acf438491b745835dfd" + integrity sha512-ppyIBJueMMisYvJABaXESY10CwEm1pUXoLOm6TeBO2bbDUQE8ZjJPNADlu31I2InL7hduSgratzRG/dHUDF41w== + dependencies: + "@types/configstore" "^2.1.1" + "@types/debug" "^0.0.30" + "@types/get-port" "^3.2.0" + "@types/glob" "^5.0.34" + "@types/lodash" "^4.14.92" + "@types/mkdirp" "^0.5.2" + "@types/node" "^8.5.7" + "@types/rimraf" "^2.0.2" + "@types/tmp" "^0.0.33" + application-config-path "^0.1.0" + command-exists "^1.2.4" + configstore "^3.0.0" + debug "^3.1.0" + eol "^0.9.1" + get-port "^3.2.0" + glob "^7.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + password-prompt "^1.0.4" + rimraf "^2.6.2" + sudo-prompt "^8.2.0" + tmp "^0.0.33" + tslib "^1.10.0" + +diff-match-patch@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.4.tgz#6ac4b55237463761c4daf0dc603eb869124744b1" + integrity sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg== + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + +dom-helpers@^5.0.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.3.tgz#7233248eb3a2d1f74aafca31e52c5299cc8ce821" + integrity sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw== + dependencies: + "@babel/runtime" "^7.6.3" + csstype "^2.6.7" + +dom-resize@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dom-resize/-/dom-resize-1.0.3.tgz#df9d71e808171fdb66ee88517b0d1c02cdb98876" + integrity sha512-lohasnGy9LABj1Sq7ZPUGIWSYf+4LFUwL0Aev+dAzxSzUiovc+lKnFyrc6M2TycMIoH7674kwKaucRIPZPgJXw== + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +download@^6.2.2: + version "6.2.5" + resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +download@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.363: + version "1.3.377" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz#b49d420b36ee6c48b0cd3137bfc7fec75f369b2e" + integrity sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA== + +electron-to-chromium@^1.3.413: + version "1.3.427" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz#ea43d02908a8c71f47ebb46e09de5a3cf8236f04" + integrity sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A== + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + +elliptic@^6.0.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +email-addresses@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-3.1.0.tgz#cabf7e085cbdb63008a70319a74e6136188812fb" + integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg== + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +engine.io-client@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" + integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~4.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~6.1.0" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.0.tgz#3a962cc4535928c252759a00f98519cb46c53ff3" + integrity sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w== + dependencies: + accepts "~1.3.4" + base64id "2.0.0" + cookie "0.3.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "^7.1.2" + +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +envinfo@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" + integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== + +envinfo@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" + integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== + +enzyme-shallow-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.1.tgz#7afe03db3801c9b76de8440694096412a8d9d49e" + integrity sha512-hGA3i1so8OrYOZSM9whlkNmVHOicJpsjgTzC+wn2JMJXhq1oO4kA4bJ5MsfzSIcC71aLDKzJ6gZpIxrqt3QTAQ== + dependencies: + has "^1.0.3" + object-is "^1.0.2" + +enzyme@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" + integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== + dependencies: + array.prototype.flat "^1.2.3" + cheerio "^1.0.0-rc.3" + enzyme-shallow-equal "^1.0.1" + function.prototype.name "^1.1.2" + has "^1.0.3" + html-element-map "^1.2.0" + is-boolean-object "^1.0.1" + is-callable "^1.1.5" + is-number-object "^1.0.4" + is-regex "^1.0.5" + is-string "^1.0.5" + is-subset "^0.1.1" + lodash.escape "^4.0.1" + lodash.isequal "^4.5.0" + object-inspect "^1.7.0" + object-is "^1.0.2" + object.assign "^4.1.0" + object.entries "^1.1.1" + object.values "^1.1.1" + raf "^3.4.1" + rst-selector-parser "^2.2.3" + string.prototype.trim "^1.2.1" + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.0, error-stack-parser@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promisify@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.0.tgz#32e3e7e796f924a6723f09ded24e71100ea57472" + integrity sha512-jCsk2fpfEFusVv1MDkF4Uf0hAzIKNDMgR6LyOIw6a3jwkN1sCgWzuwgnsHY9YSQ8n8P31HoncvE0LC44cpWTrw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-prettier@^6.1.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" + integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== + dependencies: + get-stdin "^6.0.0" + +eslint-config-react-app@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.0.tgz#135110ba56a9e378f7acfe5f36e2ae76a2317899" + integrity sha512-WrHjoGpKr1kLLiWDD81tme9jMM0hk5cMxasLSdyno6DdPt+IfLOrDJBVo6jN7tn4y1nzhs43TmUaZWO6Sf0blw== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" + integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-loader@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-babel@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz#2e7f251ccc249326da760c1a4c948a91c32d0023" + integrity sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w== + dependencies: + eslint-rule-composer "^0.3.0" + +eslint-plugin-emotion@^10.0.14: + version "10.0.27" + resolved "https://registry.yarnpkg.com/eslint-plugin-emotion/-/eslint-plugin-emotion-10.0.27.tgz#577a4265cc679f7bb826437a92fb9d709928e0a7" + integrity sha512-0IG9KWmyQTAWZNM4WoGjFbdre1Xq6uMp2jYOSHvh3ZNcDfOjOLXeH3ky1MuWZlbWIHxz/Ed5DMGlJAeKnd26VA== + +eslint-plugin-flowtype@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" + integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== + dependencies: + lodash "^4.17.15" + +eslint-plugin-graphql@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-3.1.1.tgz#640f7f73f12cee2f7145140bd2ff21694018bff5" + integrity sha512-VNu2AipS8P1BAnE/tcJ2EmBWjFlCnG+1jKdUlFNDQjocWZlFiPpMu9xYNXePoEXK+q+jG51M/6PdhOjEgJZEaQ== + dependencies: + graphql-config "^2.0.1" + lodash "^4.11.1" + +eslint-plugin-import@^2.18.2, eslint-plugin-import@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-json@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz#4d29f3a4c08d412df739bd65049ce23636515af8" + integrity sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA== + dependencies: + vscode-json-languageservice "^3.2.1" + +eslint-plugin-jsx-a11y@^6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-mocha@^6.1.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-6.3.0.tgz#72bfd06a5c4323e17e30ef41cd726030e8cdb8fd" + integrity sha512-Cd2roo8caAyG21oKaaNTj7cqeYRWW1I2B5SfpKRp0Ip1gkfwoR1Ow0IGlPWnNjzywdF4n+kHL8/9vM6zCJUxdg== + dependencies: + eslint-utils "^2.0.0" + ramda "^0.27.0" + +eslint-plugin-prefer-object-spread@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-object-spread/-/eslint-plugin-prefer-object-spread-1.2.1.tgz#27fb91853690cceb3ae6101d9c8aecc6a67a402c" + integrity sha1-J/uRhTaQzOs65hAdnIrsxqZ6QCw= + +eslint-plugin-prettier@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" + integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react-hooks@^2.0.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.0.tgz#c50ab7ca5945ce6d1cf8248d9e185c80b54171b6" + integrity sha512-bzvdX47Jx847bgAYf0FPX3u1oxU+mKU8tqrpj4UX9A96SbAmj/HVEefEy6rJUog5u8QIlOPTKZcBpGn5kkKfAQ== + +eslint-plugin-react@^7.14.3, eslint-plugin-react@^7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.2.2, eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-source-polyfill@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.12.tgz#38546c4fee76dcadae2560185610ae46c5a39520" + integrity sha512-WjOTn0LIbaN08z/8gNt3GYAomAdm6cZ2lr/QdvhTTEipr5KR6lds2ziUH+p/Iob4Lk6NClKhwPOmn1NjQEcJCg== + +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= + dependencies: + original ">=0.0.5" + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-buffer@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA== + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" + integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1" + integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" + integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +express-graphql@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.9.0.tgz#00fd8552f866bac5c9a4612b2c4c82076107b3c2" + integrity sha512-wccd9Lb6oeJ8yHpUs/8LcnGjFUUQYmOG9A5BNLybRdCzGw0PeUrtBxsIR8bfiur6uSW4OvPkVDoYH06z6/N9+w== + dependencies: + accepts "^1.3.7" + content-type "^1.0.4" + http-errors "^1.7.3" + raw-body "^2.4.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + 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" + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.0.3: + version "3.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +fastq@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" + integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0, faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fbjs@^0.8.1: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^1.3.5, figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg== + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.4.5" + +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^10.7.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" + integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== + +file-type@^12.4.2: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^4.2.0, file-type@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + +file-type@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18" + integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filename-reserved-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + integrity sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q= + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= + +filenamify-url@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filenamify-url/-/filenamify-url-1.0.0.tgz#b32bd81319ef5863b73078bed50f46a4f7975f50" + integrity sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A= + dependencies: + filenamify "^1.0.0" + humanize-url "^1.0.0" + +filenamify@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + integrity sha1-qfL/0RxQO+0wABUCknI3jx8TZaU= + dependencies: + filename-reserved-regex "^1.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +filesize@3.5.11: + version "3.5.11" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee" + integrity sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g== + +filesize@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + 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" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + dependencies: + is-buffer "~2.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +focus-lock@^0.6.3: + version "0.6.6" + resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.6.tgz#98119a755a38cfdbeda0280eaa77e307eee850c7" + integrity sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw== + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== + dependencies: + debug "^3.0.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" + integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^2.0.4" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0, from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" + integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84= + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" + integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + functions-have-names "^1.2.0" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +functions-have-names@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" + integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== + +gapi-react-component@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/gapi-react-component/-/gapi-react-component-1.0.2.tgz#18dc86484d1574edcb5c68cce0554c6d9971d57e" + integrity sha512-EuhOFmU2BHBM3OMrdC7YQp9t1sQlDO9U4+tjgtbhn+ait5WPpn9AG0YXxVdfU5jA9wM/XvDYC/TSyF04HI2zuw== + dependencies: + react "16.8.6" + +gapi-script@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/gapi-script/-/gapi-script-1.0.2.tgz#8bc6ffa475ad6b4080caa59acaad70c29da4a875" + integrity sha512-/WW6FrT2MUag641pM2vDJ3QbHlBKngsv5oLnd9UyplFUGtf4TxyiRGIJKawaH+cb8jXDXni+jNMH6SsL2PxbUQ== + +gatsby-cli@^2.10.11: + version "2.10.11" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.10.11.tgz#4a10425c2dbd5eb551c51315f778e24c6b313e1a" + integrity sha512-tEM/Z/aVFuud5vDMMvx0bIA6Ud8/KVGSRLKMALm45nJ48tsSlZKZMUAcglbDt2wagljrGQ13KpH9Nb9LeRjTKw== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/runtime" "^7.8.7" + "@hapi/joi" "^15.1.1" + better-opn "^1.0.0" + bluebird "^3.7.2" + chalk "^2.4.2" + clipboardy "^2.2.0" + common-tags "^1.8.0" + configstore "^5.0.1" + convert-hrtime "^3.0.0" + core-js "^2.6.11" + envinfo "^7.5.0" + execa "^3.4.0" + fs-exists-cached "^1.0.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.0.34" + gatsby-telemetry "^1.1.56" + hosted-git-info "^3.0.4" + is-valid-path "^0.1.1" + lodash "^4.17.15" + meant "^1.0.1" + node-fetch "^2.6.0" + object.entries "^1.1.1" + opentracing "^0.14.4" + pretty-error "^2.1.1" + progress "^2.0.3" + prompts "^2.3.1" + react "^16.8.0" + redux "^4.0.5" + resolve-cwd "^2.0.0" + semver "^6.3.0" + signal-exit "^3.0.2" + source-map "0.7.3" + stack-trace "^0.0.10" + strip-ansi "^5.2.0" + update-notifier "^3.0.1" + uuid "3.4.0" + yargs "^12.0.5" + yurnalist "^1.1.2" + optionalDependencies: + ink "^2.7.1" + ink-spinner "^3.0.1" + +gatsby-cli@^2.12.21: + version "2.12.21" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.12.21.tgz#a8c57af428aebdb7882954eaf4d844bd012905f7" + integrity sha512-kJNcgMnae5m2ySWY126LT0W+pghgkzgHqUxQpqg6QCaV7FW1k0Bkf7nhKAg0uZgy9NhUpN1wb/26VeQjNFMzAg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/runtime" "^7.9.6" + "@hapi/joi" "^15.1.1" + better-opn "^1.0.0" + bluebird "^3.7.2" + chalk "^2.4.2" + clipboardy "^2.3.0" + common-tags "^1.8.0" + configstore "^5.0.1" + convert-hrtime "^3.0.0" + core-js "^2.6.11" + envinfo "^7.5.1" + execa "^3.4.0" + fs-exists-cached "^1.0.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.2.2" + gatsby-recipes "^0.1.19" + gatsby-telemetry "^1.3.4" + hosted-git-info "^3.0.4" + is-valid-path "^0.1.1" + lodash "^4.17.15" + meant "^1.0.1" + node-fetch "^2.6.0" + object.entries "^1.1.1" + opentracing "^0.14.4" + pretty-error "^2.1.1" + progress "^2.0.3" + prompts "^2.3.2" + react "^16.8.0" + redux "^4.0.5" + resolve-cwd "^2.0.0" + semver "^6.3.0" + signal-exit "^3.0.3" + source-map "0.7.3" + stack-trace "^0.0.10" + strip-ansi "^5.2.0" + update-notifier "^3.0.1" + uuid "3.4.0" + yargs "^15.3.1" + yurnalist "^1.1.2" + optionalDependencies: + ink "^2.7.1" + ink-spinner "^3.0.1" + +gatsby-core-utils@^1.0.34: + version "1.0.34" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.0.34.tgz#beaa3e460ab48036a7e40ecfc18636eaa1963d51" + integrity sha512-CVuUQTVY+0X7vAqFnDeRT0ZkN0tUXvk6GLvUqfmoOzBvX9HphiR0VTi1tEYrsc5DSaz7Oyhr0vdp8j/e96rH1w== + dependencies: + ci-info "2.0.0" + configstore "^5.0.1" + node-object-hash "^2.0.0" + +gatsby-core-utils@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.2.2.tgz#19ad6e3917e4748333d952a04ec30ade02fe81fd" + integrity sha512-EdVUq0K7C9t32V7wndldUmUGzZp8EwU8gNMc1dtI1whyDUaUuZa6zlkbkpJwbwhPhRHdao5zhvHJXydhgzTEog== + dependencies: + ci-info "2.0.0" + configstore "^5.0.1" + node-object-hash "^2.0.0" + +gatsby-graphiql-explorer@^0.2.36: + version "0.2.36" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.2.36.tgz#c574b3a4a1238e43c50dd15d16854f63fa60b1b8" + integrity sha512-g5sMsQkPf2wkr6XMmzmB4at9q7Y0vV0+Vzurn/HPij6s4uLZ4Etm1h09P6fn56C2j3rSryfCTbok+xROjew9UQ== + dependencies: + "@babel/runtime" "^7.8.7" + +gatsby-image@^2.1.0: + version "2.2.44" + resolved "https://registry.yarnpkg.com/gatsby-image/-/gatsby-image-2.2.44.tgz#cd9b792f87c84e051d8b6a63f74376403c99a0e0" + integrity sha512-lKvBVc9lIYF1vrQ9b40Tmd5oOGTz69UXFT/gVtg5Ly5vVmDAU/4RdYbafQi6/KpCZRkAdO4ogtj0HB2YFjqfrQ== + dependencies: + "@babel/runtime" "^7.8.7" + object-fit-images "^3.2.4" + prop-types "^15.7.2" + +gatsby-link@^2.2.31: + version "2.2.31" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.2.31.tgz#1689168b1e3d36b683883675d1a54e23965962de" + integrity sha512-LNEEPW02Kt+pURc7XXpnK93yjISbrAS5EIYSUoAnd7CUDlPGYnrvIQMvu1i/5/V6jV3zlprFoB3b2SimOIYKLw== + dependencies: + "@babel/runtime" "^7.8.7" + "@types/reach__router" "^1.3.0" + prop-types "^15.7.2" + +gatsby-page-utils@^0.0.45: + version "0.0.45" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.0.45.tgz#4515bb8d352f871d4f5a59b4f9dabb5b0ab9ca2b" + integrity sha512-StAEEFuHmtOwrNxD8g3ZmH3SLM+o3kU35AfVNEL8J74Woh5r6W2eg+7EPBae2TXIkrznWQUFuViBlPTuLBk06g== + dependencies: + "@babel/runtime" "^7.8.7" + bluebird "^3.7.2" + chokidar "3.3.1" + fs-exists-cached "^1.0.0" + gatsby-core-utils "^1.0.34" + glob "^7.1.6" + lodash "^4.17.15" + micromatch "^3.1.10" + +gatsby-plugin-manifest@^2.2.40: + version "2.2.48" + resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-2.2.48.tgz#a082addd697a9d7c27ce51f1c08690b8215c8283" + integrity sha512-RWD2HlKT7TFcXs3SIiZTWjq3Ud4z79cms8pBLXjlNNddatnSNi0ne2RknERCQgmTQvcJ9eNeIzfzVtR3WAcBYA== + dependencies: + "@babel/runtime" "^7.8.7" + gatsby-core-utils "^1.0.34" + semver "^5.7.1" + sharp "^0.23.4" + +gatsby-plugin-offline@^2.1.1: + version "2.2.10" + resolved "https://registry.yarnpkg.com/gatsby-plugin-offline/-/gatsby-plugin-offline-2.2.10.tgz#ff57ce38f2ecd115af45005fcfd7c0c90a8f07f2" + integrity sha512-S+fzmu/7vPDyZyZLMpiQniQllnjgBx87k8Ii00Nea6oij9TlEYpRVTFEtJO+6P8QyF20PxoKvq0ZNmuxK9mAiw== + dependencies: + "@babel/runtime" "^7.5.5" + cheerio "^1.0.0-rc.3" + idb-keyval "^3.2.0" + lodash "^4.17.15" + slash "^3.0.0" + workbox-build "^3.6.3" + +gatsby-plugin-page-creator@^2.1.46: + version "2.1.46" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.1.46.tgz#478efc9694d45bbce0529dc5968285a16671fb44" + integrity sha512-Yx8y2DYl/7wq+CR011/gVbfIXAC424hjZN/BNZVY22WQPZ3vsBScqa9B0awpJZ3OCzLKqWcK5iRHPxzQHUwE6g== + dependencies: + "@babel/runtime" "^7.8.7" + bluebird "^3.7.2" + fs-exists-cached "^1.0.0" + gatsby-page-utils "^0.0.45" + glob "^7.1.6" + lodash "^4.17.15" + micromatch "^3.1.10" + +gatsby-plugin-react-helmet@^3.0.12: + version "3.1.24" + resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.1.24.tgz#c732cd6a6eb7b7bfc2fa06ca1423254fa6412118" + integrity sha512-kLR/RMDBVriJptsJufoL1UBVHgq2fZIMXen7nru2ugGn0m8xwpArFoOz6meYlpiDB3Z41eYR/+Nr8GizQnYcxg== + dependencies: + "@babel/runtime" "^7.8.7" + +gatsby-plugin-sass@^2.0.11: + version "2.1.31" + resolved "https://registry.yarnpkg.com/gatsby-plugin-sass/-/gatsby-plugin-sass-2.1.31.tgz#c51ef3a6ec5451955d05fd3b7117bf55baab584d" + integrity sha512-3+2rvNxnBBcCRtc13D8aC/m8K6GznPcWJRBYX1YHiLYYw547eQG2YheRGrp+mzjgx5rv3XUF6WsFXroEUGXyfg== + dependencies: + "@babel/runtime" "^7.8.7" + sass-loader "^7.3.1" + +gatsby-plugin-sharp@^2.0.37: + version "2.4.13" + resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.4.13.tgz#da47cfd8a0d80fc35b7bb072d8a84f6f4f29116d" + integrity sha512-ogRe5CxBIBZ0R76t7F3F1ji00BO7qnTO4vZkREaSxDBwgY6SOGKT8uie497Ej6usfarc9XQ/jMnXBu5EkrT4tA== + dependencies: + "@babel/runtime" "^7.8.7" + async "^2.6.3" + bluebird "^3.7.2" + fs-extra "^8.1.0" + gatsby-core-utils "^1.0.34" + got "^8.3.2" + imagemin "^6.1.0" + imagemin-mozjpeg "^8.0.0" + imagemin-pngquant "^6.0.1" + imagemin-webp "^5.1.0" + lodash "^4.17.15" + mini-svg-data-uri "^1.1.3" + potrace "^2.1.2" + probe-image-size "^4.1.1" + progress "^2.0.3" + semver "^5.7.1" + sharp "^0.23.4" + svgo "1.3.2" + uuid "^3.4.0" + +gatsby-plugin-typescript@^2.0.14: + version "2.2.5" + resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.2.5.tgz#60d136ed9ce02dc05054f987934bfee1b0cca97e" + integrity sha512-C17SW9tW08xUDl6K6niwY0FUi4INMVb5n29+6QwMGJw4Nxrztt3l99C6rKGR4qogsNjNEW0T/xRp2ehuHY/9rw== + dependencies: + "@babel/core" "^7.8.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/preset-typescript" "^7.8.3" + "@babel/runtime" "^7.8.7" + babel-plugin-remove-graphql-queries "^2.7.26" + +gatsby-react-router-scroll@^2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.1.24.tgz#3125b9f8bfc9ae58f31748d291d988504d085c8a" + integrity sha512-Gv+oqGwDOaP2VHCRU2wP/GJP8o+XsFa5vEB1imlskfqpM8OG/Oy526z00WyTT/Pdks9mGg+bGyGgJzovQHIugA== + dependencies: + "@babel/runtime" "^7.8.7" + scroll-behavior "^0.9.10" + warning "^3.0.0" + +gatsby-recipes@^0.1.19: + version "0.1.19" + resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.1.19.tgz#ac2634452c89253bd18d4f73face44db442b413d" + integrity sha512-N++VIje7M0N6zoShZMISyaIzMwbu9Lot7iyNDk6BblI466J8yQvceqj4uDIb9NzI6cQ82Px0yFGXapymsWGg9Q== + dependencies: + "@babel/core" "^7.9.6" + "@babel/generator" "^7.9.6" + "@babel/standalone" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.6" + "@hapi/joi" "^15.1.1" + "@mdx-js/mdx" "^1.6.1" + "@mdx-js/react" "^1.6.1" + "@mdx-js/runtime" "^1.6.1" + acorn "^7.2.0" + acorn-jsx "^5.2.0" + babel-core "7.0.0-bridge.0" + babel-eslint "^10.1.0" + babel-loader "^8.1.0" + babel-plugin-add-module-exports "^0.3.3" + babel-plugin-dynamic-import-node "^2.3.3" + babel-plugin-remove-graphql-queries "^2.9.1" + babel-preset-gatsby "^0.4.2" + cors "^2.8.5" + detect-port "^1.3.0" + event-source-polyfill "^1.0.12" + execa "^4.0.1" + express "^4.17.1" + express-graphql "^0.9.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.2.2" + gatsby-telemetry "^1.3.4" + glob "^7.1.6" + graphql "^14.6.0" + graphql-compose "^6.3.8" + graphql-subscriptions "^1.1.0" + graphql-type-json "^0.3.1" + hicat "^0.7.0" + html-tag-names "^1.1.5" + humanize-list "^1.0.1" + import-jsx "^4.0.0" + ink-box "^1.0.0" + ink-link "^1.1.0" + ink-select-input "^3.1.2" + ink-spinner "^3.0.1" + is-binary-path "^2.1.0" + is-blank "^2.1.0" + is-newline "^1.0.0" + is-relative "^1.0.0" + is-string "^1.0.5" + is-url "^1.2.4" + jest-diff "^25.5.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + pkg-dir "^4.2.0" + prettier "^2.0.5" + remark-stringify "^8.0.0" + semver "^7.3.2" + single-trailing-newline "^1.0.0" + style-to-object "^0.3.0" + subscriptions-transport-ws "^0.9.16" + svg-tag-names "^2.0.1" + unist-util-remove "^2.0.0" + unist-util-visit "^2.0.2" + url-loader "^1.1.2" + urql "^1.9.7" + ws "^7.3.0" + xstate "^4.9.1" + +gatsby-source-filesystem@^2.0.37: + version "2.1.56" + resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-2.1.56.tgz#52e96ac7ea64846699662b9bcf34caf8a3a3f603" + integrity sha512-+5I/RVqefaMErclztgJ1BZBT+NKquQ7UlARecwZWowcVuTMlsFv+s9U5CZaSCm6HFr+ycVnTH7L+GcTBwiE+9g== + dependencies: + "@babel/runtime" "^7.8.7" + better-queue "^3.8.10" + bluebird "^3.7.2" + chokidar "3.3.1" + file-type "^12.4.2" + fs-extra "^8.1.0" + gatsby-core-utils "^1.0.34" + got "^8.3.2" + md5-file "^3.2.3" + mime "^2.4.4" + pretty-bytes "^5.3.0" + progress "^2.0.3" + read-chunk "^3.2.0" + valid-url "^1.0.9" + xstate "^4.8.0" + +gatsby-telemetry@^1.1.56: + version "1.1.56" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.1.56.tgz#d5648b1739b51c44e3de0b3d51113953d9f689c8" + integrity sha512-WMYO4uSmu/nfwt2sTUExA2pXRVJ+7AQuvB1LDPPYKeMkQee5eO23TYRS3pxWqIPtxmmFTruXwNEsMklwlxn2eA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/runtime" "^7.8.7" + bluebird "^3.7.2" + boxen "^4.2.0" + configstore "^5.0.1" + envinfo "^7.5.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.0.34" + git-up "4.0.1" + is-docker "2.0.0" + lodash "^4.17.15" + node-fetch "2.6.0" + resolve-cwd "^2.0.0" + source-map "^0.7.3" + stack-trace "^0.0.10" + stack-utils "1.0.2" + uuid "3.4.0" + +gatsby-telemetry@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.3.4.tgz#525c9d0c91dc95f09be14090fe44f6ca4a967f16" + integrity sha512-t/IBxUJKWn9qRNfSrwYwFX4BaV/41LBaVeEL3LYmzcLMS8Cin4bYAew6yyO70jeg7939JDuKAaIzISm2Jzc7kg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/runtime" "^7.9.6" + bluebird "^3.7.2" + boxen "^4.2.0" + configstore "^5.0.1" + envinfo "^7.5.1" + fs-extra "^8.1.0" + gatsby-core-utils "^1.2.2" + git-up "4.0.1" + is-docker "2.0.0" + lodash "^4.17.15" + node-fetch "2.6.0" + resolve-cwd "^2.0.0" + source-map "^0.7.3" + stack-trace "^0.0.10" + stack-utils "1.0.2" + uuid "3.4.0" + +gatsby-transformer-sharp@^2.1.19: + version "2.3.19" + resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-2.3.19.tgz#a6bfc93ec9070fef9a8e97bf839ccc193fa26b0e" + integrity sha512-V3OoG9R0k+dUcJiHoI3miHrmW2kcTj8FD4GT3XZHXmpoJNIUJ/2a78+O0m6Px/3F8EzafGo35id4fFhLePZdsw== + dependencies: + "@babel/runtime" "^7.8.7" + bluebird "^3.7.2" + fs-extra "^8.1.0" + potrace "^2.1.2" + probe-image-size "^4.1.1" + semver "^5.7.1" + sharp "^0.23.4" + +gatsby@^2.19.10: + version "2.19.45" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.19.45.tgz#6a90275ea4c86bcf3916cb62d1446202c98b3adb" + integrity sha512-MyhgdrmKWBzYVKZTv21sQza1VNAA3NHWIXVqKtgfKGRvZ6wjiiZLElX9vYbQFXfIpoUrncDr3CDVuhEOqd7qnw== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/core" "^7.8.7" + "@babel/parser" "^7.8.8" + "@babel/polyfill" "^7.8.7" + "@babel/runtime" "^7.8.7" + "@babel/traverse" "^7.8.6" + "@hapi/joi" "^15.1.1" + "@mikaelkristiansson/domready" "^1.0.10" + "@pieh/friendly-errors-webpack-plugin" "1.7.0-chalk-2" + "@pmmmwh/react-refresh-webpack-plugin" "^0.2.0" + "@reach/router" "^1.3.3" + "@typescript-eslint/eslint-plugin" "^2.23.0" + "@typescript-eslint/parser" "^2.23.0" + address "1.1.2" + autoprefixer "^9.7.4" + axios "^0.19.0" + babel-core "7.0.0-bridge.0" + babel-eslint "^10.1.0" + babel-loader "^8.0.6" + babel-plugin-add-module-exports "^0.3.3" + babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-remove-graphql-queries "^2.7.26" + babel-preset-gatsby "^0.2.36" + better-opn "1.0.0" + better-queue "^3.8.10" + bluebird "^3.7.2" + browserslist "^4.9.1" + cache-manager "^2.11.1" + cache-manager-fs-hash "^0.0.7" + chalk "^2.4.2" + chokidar "3.3.1" + common-tags "^1.8.0" + compression "^1.7.4" + convert-hrtime "^3.0.0" + copyfiles "^2.2.0" + core-js "^2.6.11" + cors "^2.8.5" + css-loader "^1.0.1" + date-fns "^2.11.0" + debug "^3.2.6" + del "^5.1.0" + detect-port "^1.3.0" + devcert "^1.1.0" + dotenv "^8.2.0" + eslint "^6.8.0" + eslint-config-react-app "^5.2.0" + eslint-loader "^2.2.1" + eslint-plugin-flowtype "^3.13.0" + eslint-plugin-graphql "^3.1.1" + eslint-plugin-import "^2.20.1" + eslint-plugin-jsx-a11y "^6.2.3" + eslint-plugin-react "^7.19.0" + eslint-plugin-react-hooks "^1.7.0" + event-source-polyfill "^1.0.12" + express "^4.17.1" + express-graphql "^0.9.0" + fast-levenshtein "^2.0.6" + file-loader "^1.1.11" + flat "^4.1.0" + fs-exists-cached "1.0.0" + fs-extra "^8.1.0" + gatsby-cli "^2.10.11" + gatsby-core-utils "^1.0.34" + gatsby-graphiql-explorer "^0.2.36" + gatsby-link "^2.2.31" + gatsby-plugin-page-creator "^2.1.46" + gatsby-react-router-scroll "^2.1.24" + gatsby-telemetry "^1.1.56" + glob "^7.1.6" + got "8.3.2" + graphql "^14.6.0" + graphql-compose "^6.3.8" + graphql-playground-middleware-express "^1.7.12" + hasha "^5.2.0" + invariant "^2.2.4" + is-relative "^1.0.0" + is-relative-url "^3.0.0" + is-wsl "^2.1.1" + jest-worker "^24.9.0" + json-loader "^0.5.7" + json-stringify-safe "^5.0.1" + latest-version "5.1.0" + lodash "^4.17.15" + lokijs "^1.5.8" + md5 "^2.2.1" + md5-file "^3.2.3" + micromatch "^3.1.10" + mime "^2.4.4" + mini-css-extract-plugin "^0.8.0" + mitt "^1.2.0" + mkdirp "^0.5.1" + moment "^2.24.0" + name-all-modules-plugin "^1.0.1" + normalize-path "^2.1.1" + null-loader "^0.1.1" + opentracing "^0.14.4" + optimize-css-assets-webpack-plugin "^5.0.3" + p-defer "^3.0.0" + parseurl "^1.3.3" + physical-cpu-count "^2.0.0" + pnp-webpack-plugin "^1.6.4" + postcss-flexbugs-fixes "^4.2.0" + postcss-loader "^3.0.0" + prompts "^2.3.1" + prop-types "^15.7.2" + raw-loader "^0.5.1" + react-dev-utils "^4.2.3" + react-error-overlay "^3.0.0" + react-hot-loader "^4.12.20" + react-refresh "^0.7.0" + redux "^4.0.5" + redux-thunk "^2.3.0" + semver "^5.7.1" + shallow-compare "^1.2.2" + sift "^5.1.0" + signal-exit "^3.0.2" + slugify "^1.4.0" + socket.io "^2.3.0" + stack-trace "^0.0.10" + string-similarity "^1.2.2" + style-loader "^0.23.1" + terser-webpack-plugin "^1.4.3" + "true-case-path" "^2.2.1" + type-of "^2.0.1" + url-loader "^1.1.2" + util.promisify "^1.0.1" + uuid "^3.4.0" + v8-compile-cache "^1.1.2" + webpack "~4.41.6" + webpack-dev-middleware "^3.7.2" + webpack-dev-server "^3.10.3" + webpack-hot-middleware "^2.25.0" + webpack-merge "^4.2.2" + webpack-stats-plugin "^0.3.0" + xstate "^4.8.0" + yaml-loader "^0.5.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-node-dimensions@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-node-dimensions/-/get-node-dimensions-1.2.1.tgz#fb7b4bb57060fb4247dd51c9d690dfbec56b0823" + integrity sha512-2MSPMu7S1iOTL+BOa6K1S62hB2zUAYNF/lV0gSVlOaacd087lc6nR1H1r0e3B1CerTo+RceOmi1iJW+vp21xcQ== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stdin@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +gh-pages@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-2.2.0.tgz#74ebeaca8d2b9a11279dcbd4a39ddfff3e6caa24" + integrity sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA== + dependencies: + async "^2.6.1" + commander "^2.18.0" + email-addresses "^3.0.1" + filenamify-url "^1.0.0" + fs-extra "^8.1.0" + globby "^6.1.0" + +git-up@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +global@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@8.0.2, globby@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== + dependencies: + glob "~7.1.1" + lodash "~4.17.12" + minimatch "~3.0.2" + +got@8.3.2, got@^8.3.1, got@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + +graphql-compose@^6.3.8: + version "6.3.8" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-6.3.8.tgz#9f82a85d5001a83adf1f7c4d3b5e5f72c432a062" + integrity sha512-o0/jzQEMIpSjryLKwmD1vGrCubiPxD0LxlGTgWDSu38TBepu2GhugC9gYgTEbtiCZAHPtvkZ90SzzABOWZyQLA== + dependencies: + graphql-type-json "^0.2.4" + object-path "^0.11.4" + +graphql-config@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.2.1.tgz#5fd0ec77ac7428ca5fb2026cf131be10151a0cb2" + integrity sha512-U8+1IAhw9m6WkZRRcyj8ZarK96R6lQBQ0an4lp76Ps9FyhOXENC5YQOxOFGm5CxPrX2rD0g3Je4zG5xdNJjwzQ== + dependencies: + graphql-import "^0.7.1" + graphql-request "^1.5.0" + js-yaml "^3.10.0" + lodash "^4.17.4" + minimatch "^3.0.4" + +graphql-import@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.7.1.tgz#4add8d91a5f752d764b0a4a7a461fcd93136f223" + integrity sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw== + dependencies: + lodash "^4.17.4" + resolve-from "^4.0.0" + +graphql-playground-html@1.6.12: + version "1.6.12" + resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz#8b3b34ab6013e2c877f0ceaae478fafc8ca91b85" + integrity sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg== + +graphql-playground-middleware-express@^1.7.12: + version "1.7.12" + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.12.tgz#de4b2402a02159b2125561fe38eb378b56cf6d99" + integrity sha512-17szgonnVSxWVrgblLRHHLjWnMUONfkULIwSunaMvYx8k5oG3yL86cyGCbHuDFUFkyr2swLhdfYl4mDfDXuvOA== + dependencies: + graphql-playground-html "1.6.12" + +graphql-request@^1.5.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" + integrity sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg== + dependencies: + cross-fetch "2.2.2" + +graphql-subscriptions@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" + integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== + dependencies: + iterall "^1.2.1" + +graphql-tag@^2.10.3, graphql-tag@^2.4.2: + version "2.10.3" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" + integrity sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA== + +graphql-type-json@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9" + integrity sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w== + +graphql-type-json@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.1.tgz#47fca2b1fa7adc0758d165b33580d7be7a6cf548" + integrity sha512-1lPkUXQ2L8o+ERLzVAuc3rzc/E6pGF+6HnjihCVTK0VzR0jCuUd92FqNxoHdfILXqOn2L6b4y47TBxiPyieUVA== + +graphql@^14.6.0: + version "14.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.6.0.tgz#57822297111e874ea12f5cd4419616930cd83e49" + integrity sha512-VKzfvHEKybTKjQVpTFrA5yUq2S9ihcZvfJAtsDBBCuV6wauPu1xl/f9ehgVf0FcEJJs4vz6ysb/ZMkGigQZseg== + dependencies: + iterall "^1.2.2" + +graphql@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.0.0.tgz#042a5eb5e2506a2e2111ce41eb446a8e570b8be9" + integrity sha512-ZyVO1xIF9F+4cxfkdhOJINM+51B06Friuv4M66W7HzUOeFd+vNzUn4vtswYINPi6sysjf1M2Ri/rwZALqgwbaQ== + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +gzip-size@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= + dependencies: + duplexer "^0.1.1" + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.0.tgz#33094d1f69c40a4a6ac7be53d5fe3ff95a269e0c" + integrity sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + +hast-to-hyperscript@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-7.0.4.tgz#7c4c037d9a8ea19b0a3fdb676a26448ad922353d" + integrity sha512-vmwriQ2H0RPS9ho4Kkbf3n3lY436QKLq6VaGA1pzBh36hBi3tm1DO9bR+kaJIbpT10UqaANDkMjxvjVfr+cnOA== + dependencies: + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.2.1" + unist-util-is "^3.0.0" + web-namespaces "^1.1.2" + +hast-util-from-parse5@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c" + integrity sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA== + dependencies: + ccount "^1.0.3" + hastscript "^5.0.0" + property-information "^5.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" + +hast-util-parse-selector@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" + integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== + +hast-util-raw@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-5.0.2.tgz#62288f311ec2f35e066a30d5e0277f963ad43a67" + integrity sha512-3ReYQcIHmzSgMq8UrDZHFL0oGlbuVGdLKs8s/Fe8BfHFAyZDrdv1fy/AGn+Fim8ZuvAHcJ61NQhVMtyfHviT/g== + dependencies: + hast-util-from-parse5 "^5.0.0" + hast-util-to-parse5 "^5.0.0" + html-void-elements "^1.0.0" + parse5 "^5.0.0" + unist-util-position "^3.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hast-util-to-parse5@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-5.1.2.tgz#09d27bee9ba9348ea05a6cfcc44e02f9083969b6" + integrity sha512-ZgYLJu9lYknMfsBY0rBV4TJn2xiwF1fXFFjbP6EE7S0s5mS8LIKBVWzhA1MeIs1SWW6GnnE4In6c3kPb+CWhog== + dependencies: + hast-to-hyperscript "^7.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hastscript@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" + integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hicat@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/hicat/-/hicat-0.7.0.tgz#a704cb3f57e49fbd7d38c2edd7aba38ff0b35263" + integrity sha1-pwTLP1fkn719OMLt16ujj/CzUmM= + dependencies: + highlight.js "^8.1.0" + minimist "^0.2.0" + +highlight.js@^8.1.0: + version "8.9.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" + integrity sha1-uKnFSTISqTkvAiK2SclhFJfr+4g= + +highlight.js@^9.12.0: + version "9.18.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" + integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + +hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== + +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hosted-git-info@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz#be4973eb1fd2737b11c9c7c19380739bb249f60d" + integrity sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ== + dependencies: + lru-cache "^5.1.1" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-element-map@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.2.0.tgz#dfbb09efe882806af63d990cf6db37993f099f22" + integrity sha512-0uXq8HsuG1v2TmQ8QkIhzbrqeskE4kn52Q18QJ9iAA/SnHoEKXWiUxHQtclRsCFWEUD2So34X+0+pZZu862nnw== + dependencies: + array-filter "^1.0.0" + +html-entities@^1.2.0, html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-tag-names@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.5.tgz#f537420c16769511283f8ae1681785fbc89ee0a9" + integrity sha512-aI5tKwNTBzOZApHIynaAwecLBv8TlZTEy/P4Sj2SzzAhBrGuI8yGZ0UIXVPQzOHGS+to2mjb04iy6VWt/8+d8A== + +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + +html@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/html/-/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" + integrity sha1-pUT6nqVJK/s6LMqCEKEL57WvH2E= + dependencies: + concat-stream "^1.4.7" + +htmlparser2@^3.3.0, htmlparser2@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + 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" + +http-errors@1.7.3, http-errors@^1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +humanize-list@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/humanize-list/-/humanize-list-1.0.1.tgz#e7e719c60a5d5848e8e0a5ed5f0a885496c239fd" + integrity sha1-5+cZxgpdWEjo4KXtXwqIVJbCOf0= + +humanize-url@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/humanize-url/-/humanize-url-1.0.1.tgz#f4ab99e0d288174ca4e1e50407c55fbae464efff" + integrity sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8= + dependencies: + normalize-url "^1.0.0" + strip-url-auth "^1.0.0" + +husky@^3.0.4: + version "3.1.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" + integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== + dependencies: + chalk "^2.4.2" + ci-info "^2.0.0" + cosmiconfig "^5.2.1" + execa "^1.0.0" + get-stdin "^7.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + read-pkg "^5.2.0" + run-node "^1.0.0" + slash "^3.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +idb-keyval@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6" + integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ== + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +imagemin-mozjpeg@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.0.tgz#d2ca4e8c982c7c6eda55069af89dee4c1cebcdfd" + integrity sha512-+EciPiIjCb8JWjQNr1q8sYWYf7GDCNDxPYnkD11TNIjjWNzaV+oTg4DpOPQjl5ZX/KRCPMEgS79zLYAQzLitIA== + dependencies: + execa "^1.0.0" + is-jpg "^2.0.0" + mozjpeg "^6.0.0" + +imagemin-pngquant@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-6.0.1.tgz#07b4c80e327ac60ef5246758029b1e8aecd879b9" + integrity sha512-Stk+fZCLxZznV8MFNA/T3AY/VRKevsiP9uZOLV0RCXoi0vUUFriySYuz/83IGp9D254EW8miGyyQ69zKouFr7w== + dependencies: + execa "^0.10.0" + is-png "^1.0.0" + is-stream "^1.1.0" + pngquant-bin "^5.0.0" + +imagemin-webp@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/imagemin-webp/-/imagemin-webp-5.1.0.tgz#ddb1307ad97aff97293c5a600e384e40c07f68a7" + integrity sha512-BsPTpobgbDPFBBsI3UflnU/cpIVa15qInEDBcYBw16qI/6XiB4vDF/dGp9l4aM3pfFDDYqR0mANMcKpBD7wbCw== + dependencies: + cwebp-bin "^5.0.0" + exec-buffer "^3.0.0" + is-cwebp-readable "^2.0.1" + +imagemin@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-6.1.0.tgz#62508b465728fea36c03cdc07d915fe2d8cf9e13" + integrity sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A== + dependencies: + file-type "^10.7.0" + globby "^8.0.1" + make-dir "^1.0.0" + p-pipe "^1.1.0" + pify "^4.0.1" + replace-ext "^1.0.0" + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +immutable-devtools@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/immutable-devtools/-/immutable-devtools-0.0.4.tgz#1e7e87f2c7a4f0533955bc4c2922d124bf9129dd" + integrity sha1-Hn6H8sek8FM5VbxMKSLRJL+RKd0= + +immutable@^3.6.4: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +immutable@^4.0.0-rc.12: + version "4.0.0-rc.12" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" + integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-jsx@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-jsx/-/import-jsx-4.0.0.tgz#2f31fd8e884e14f136751448841ffd2d3144dce1" + integrity sha512-CnjJ2BZFJzbFDmYG5S47xPQjMlSbZLyLJuG4znzL4TdPtJBxHtFP1xVmR+EYX4synFSldiY3B6m00XkPM3zVnA== + dependencies: + "@babel/core" "^7.5.5" + "@babel/plugin-proposal-object-rest-spread" "^7.5.5" + "@babel/plugin-transform-destructuring" "^7.5.0" + "@babel/plugin-transform-react-jsx" "^7.3.0" + caller-path "^2.0.0" + find-cache-dir "^3.2.0" + make-dir "^3.0.2" + resolve-from "^3.0.0" + rimraf "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +ink-box@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ink-box/-/ink-box-1.0.0.tgz#8cbcb5541d32787d08d43acf1a9907e86e3572f3" + integrity sha512-wD2ldWX9lcE/6+flKbAJ0TZF7gKbTH8CRdhEor6DD8d+V0hPITrrGeST2reDBpCia8wiqHrdxrqTyafwtmVanA== + dependencies: + boxen "^3.0.0" + prop-types "^15.7.2" + +ink-link@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ink-link/-/ink-link-1.1.0.tgz#e00bd68dfd163a9392baecc0808391fd07e6cfbb" + integrity sha512-a716nYz4YDPu8UOA2PwabTZgTvZa3SYB/70yeXVmTOKFAEdMbJyGSVeNuB7P+aM2olzDj9AGVchA7W5QytF9uA== + dependencies: + prop-types "^15.7.2" + terminal-link "^2.1.1" + +ink-select-input@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/ink-select-input/-/ink-select-input-3.1.2.tgz#fd53f2f0946bc43989899522b013a2c10a60f722" + integrity sha512-PaLraGx8A54GhSkTNzZI8bgY0elAoa1jSPPe5Q52B5VutcBoJc4HE3ICDwsEGJ88l1Hw6AWjpeoqrq82a8uQPA== + dependencies: + arr-rotate "^1.0.0" + figures "^2.0.0" + lodash.isequal "^4.5.0" + prop-types "^15.5.10" + +ink-spinner@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ink-spinner/-/ink-spinner-3.0.1.tgz#7b4b206d2b18538701fd92593f9acabbfe308dce" + integrity sha512-AVR4Z/NXDQ7dT5ltWcCzFS9Dd4T8eaO//E2UO8VYNiJcZpPCSJ11o5A0UVPcMlZxGbGD6ikUFDR3ZgPUQk5haQ== + dependencies: + cli-spinners "^1.0.0" + prop-types "^15.5.10" + +ink@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/ink/-/ink-2.7.1.tgz#ff1c75b4b022924e2993af62297fa0e48e85618b" + integrity sha512-s7lJuQDJEdjqtaIWhp3KYHl6WV3J04U9zoQ6wVc+Xoa06XM27SXUY57qC5DO46xkF0CfgXMKkKNcgvSu/SAEpA== + dependencies: + ansi-escapes "^4.2.1" + arrify "^2.0.1" + auto-bind "^4.0.0" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-truncate "^2.1.0" + is-ci "^2.0.0" + lodash.throttle "^4.1.1" + log-update "^3.0.0" + prop-types "^15.6.2" + react-reconciler "^0.24.0" + scheduler "^0.18.0" + signal-exit "^3.0.2" + slice-ansi "^3.0.0" + string-length "^3.1.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + yoga-layout-prebuilt "^1.9.3" + +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +inquirer@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" + integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.0, is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumeric@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" + integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@^2.1.0, is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-blank@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-blank/-/is-blank-2.1.0.tgz#69a73d3c0d4f417dfffb207a2795c0f0e576de04" + integrity sha1-aac9PA1PQX3/+yB6J5XA8OV23gQ= + dependencies: + is-empty latest + is-whitespace latest + +is-boolean-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" + integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + +is-buffer@^1.1.5, is-buffer@~1.1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.0, is-buffer@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + +is-builtin-module@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" + integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== + dependencies: + builtin-modules "^3.0.0" + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-cwebp-readable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-cwebp-readable/-/is-cwebp-readable-2.0.1.tgz#afb93b0c0abd0a25101016ae33aea8aedf926d26" + integrity sha1-r7k7DAq9CiUQEBauM66ort+SbSY= + dependencies: + file-type "^4.3.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-decimal@^1.0.0, is-decimal@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +is-empty@latest: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b" + integrity sha1-3pu1snhzigWgsJpX4ftNSjQan2s= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= + +is-glob@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-invalid-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34" + integrity sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ= + dependencies: + is-glob "^2.0.0" + +is-jpg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" + integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + +is-newline@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-newline/-/is-newline-1.0.0.tgz#f0aac97cc9ac0b4b94af8c55a01cf3690f436e38" + integrity sha1-8KrJfMmsC0uUr4xVoBzzaQ9Dbjg= + dependencies: + newline-regex "^0.2.0" + +is-npm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" + integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0, is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-png@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce" + integrity sha1-1XSxK/J1wDUEVVcLDltXqwYgd84= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-relative-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-3.0.0.tgz#f623c8e26baa5bd3742b3b7ec074f50f3b45b3f3" + integrity sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA== + dependencies: + is-absolute-url "^3.0.0" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-root@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5" + integrity sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU= + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.0" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-valid-path/-/is-valid-path-0.1.1.tgz#110f9ff74c37f663e1ec7915eb451f2db93ac9df" + integrity sha1-EQ+f90w39mPh7HkV60UfLbk6yd8= + dependencies: + is-invalid-path "^0.1.0" + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-whitespace@latest: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isemail@3.x.x: + version "3.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" + integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== + dependencies: + punycode "2.x.x" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1, isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +iterall@^1.2.1, iterall@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jimp@^0.6.4: + version "0.6.8" + resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.6.8.tgz#63074984337cc469cd4030946e503e7c02a18b5c" + integrity sha512-F7emeG7Hp61IM8VFbNvWENLTuHe0ghizWPuP4JS9ujx2r5mCVYEd/zdaz6M2M42ZdN41blxPajLWl9FXo7Mr2Q== + dependencies: + "@jimp/custom" "^0.6.8" + "@jimp/plugins" "^0.6.8" + "@jimp/types" "^0.6.8" + core-js "^2.5.7" + regenerator-runtime "^0.13.3" + +joi@^11.1.1: + version "11.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" + integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA== + dependencies: + hoek "4.x.x" + isemail "3.x.x" + topo "2.x.x" + +jpeg-js@^0.3.4: + version "0.3.7" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" + integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ== + +js-base64@^2.1.8: + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.5.2: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-loader@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonc-parser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.2.1.tgz#db73cd59d78cce28723199466b2a03d1be1df2bc" + integrity sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsonwebtoken@^8.1.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^5.6.0" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +keymirror@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/keymirror/-/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35" + integrity sha1-kYiJ6hP40KQufFVyUO7nE63JXDU= + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +latest-version@5.1.0, latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^9.2.4: + version "9.5.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" + integrity sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA== + dependencies: + chalk "^2.4.2" + commander "^2.20.0" + cosmiconfig "^5.2.1" + debug "^4.1.1" + dedent "^0.7.0" + del "^5.0.0" + execa "^2.0.3" + listr "^0.14.3" + log-symbols "^3.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.1.1" + string-argv "^0.3.0" + stringify-object "^3.3.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +load-bmfont@^1.3.1, load-bmfont@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz#75f17070b14a8c785fe7f5bee2e6fd4f98093b6b" + integrity sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g== + dependencies: + buffer-equal "0.0.1" + mime "^1.3.4" + parse-bmfont-ascii "^1.0.3" + parse-bmfont-binary "^1.0.5" + parse-bmfont-xml "^1.1.4" + phin "^2.9.1" + xhr "^2.0.1" + xtend "^4.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0, loader-fs-cache@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lockfile@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.clonedeep@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= + +lodash.every@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" + integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + +lodash.foreach@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.map@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + +lodash.maxby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.maxby/-/lodash.maxby-4.6.0.tgz#082240068f3c7a227aa00a8380e4f38cf0786e3d" + integrity sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.0.0, lodash@^4.11.1, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.12: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +log-update@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-3.4.0.tgz#3b9a71e00ac5b1185cc193a36d654581c48f97b9" + integrity sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg== + dependencies: + ansi-escapes "^3.2.0" + cli-cursor "^2.1.0" + wrap-ansi "^5.0.0" + +logalot@^2.0.0, logalot@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI= + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== + +lokijs@^1.5.8: + version "1.5.8" + resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.8.tgz#9296f288edb2147389ec692fc972c428c59179d1" + integrity sha512-D8E3TBrY35o1ELnonp2MF8b3wKu2tVNl2TqRjvS+95oPMMe7OoIAxNY1qr+5BEZwnWn2V4ErAjVt000DonM+FA== + +longest-streak@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + +longest@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +loud-rejection@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" + integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.2" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4= + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.0.tgz#b5cbf01556c16966febe54ceec0fb4dc90df6c28" + integrity sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg= + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +magic-string@^0.25.3: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +markdown-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" + integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== + dependencies: + repeat-string "^1.0.0" + +md5-file@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" + integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== + dependencies: + buffer-alloc "^1.1.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +md5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== + dependencies: + unist-util-remove "^2.0.0" + +mdast-util-compact@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" + integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-definitions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-2.0.1.tgz#2c931d8665a96670639f17f98e32c3afcfee25f3" + integrity sha512-Co+DQ6oZlUzvUR7JCpP249PcexxygiaKk9axJh+eRzHDZJk2julbIdKB4PXHVxdBuLzvJ1Izb+YDpj2deGMOuA== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-to-hast@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-8.2.0.tgz#adf9f824defcd382e53dd7bace4282a45602ac67" + integrity sha512-WjH/KXtqU66XyTJQ7tg7sjvTw1OQcVV0hKdFh3BgHPwZ96fSBCQ/NitEHsN70Mmnggt+5eUUC7pCnK+2qGQnCA== + dependencies: + collapse-white-space "^1.0.0" + detab "^2.0.0" + mdast-util-definitions "^2.0.0" + mdurl "^1.0.0" + trim-lines "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +meant@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" + integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memoize-one@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +merge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" + +mime@1.6.0, mime@^1.3.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +mini-css-extract-plugin@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" + integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +mini-svg-data-uri@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.1.3.tgz#9759ee5f4d89a4b724d089ce52eab4b623bfbc88" + integrity sha512-EeKOmdzekjdPe53/GdxmUpNgDQFkNeSte6XkJmOBt4BfWL6FQ9G9RtLNh+JMjFS3LhdpSICMIkZdznjiecASHQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q= + dependencies: + brace-expansion "^1.0.0" + +minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" + integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" + integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mitt@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + dependencies: + minimist "^1.2.5" + +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +moment-duration-format@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/moment-duration-format/-/moment-duration-format-1.3.0.tgz#541771b5f87a049cc65540475d3ad966737d6908" + integrity sha1-VBdxtfh6BJzGVUBHXTrZZnN9aQg= + +moment-timezone@^0.5.27: + version "0.5.28" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.28.tgz#f093d789d091ed7b055d82aa81a82467f72e4338" + integrity sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw== + dependencies: + moment ">= 2.9.0" + +"moment@>= 2.9.0", moment@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + +moment@^2.18.1: + version "2.25.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.25.3.tgz#252ff41319cf41e47761a1a88cab30edfe9808c0" + integrity sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg== + +monocle-ts@^1.0.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/monocle-ts/-/monocle-ts-1.7.2.tgz#d9825ae18846ab63f915cb6f2194a78a40025610" + integrity sha512-F08hPUzQ14vOtac2vOagnvXPr0R0MRKWXF6Bwd3gQ4XnV2qfU0MzPL+L18kX4dXBkat74pxbL88V1BjAj3YOWg== + +moo@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +mozjpeg@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-6.0.1.tgz#56969dddb5741ef2bcb1af066cae21e61a91a27b" + integrity sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.1.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +name-all-modules-plugin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz#0abfb6ad835718b9fb4def0674e06657a954375c" + integrity sha1-Cr+2rYNXGLn7Te8GdOBmV6lUN1w= + +nan@^2.12.1, nan@^2.13.2, nan@^2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nearley@^2.7.10: + version "2.19.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.1.tgz#4af4006e16645ff800e9f993c3af039857d9dbdc" + integrity sha512-xq47GIUGXxU9vQg7g/y1o1xuKnkO7ev4nRWqftmQrLkfnE/FjRqDaGOUakM8XHPn/6pW3bGjU2wgoJyId90rqg== + dependencies: + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + semver "^5.4.1" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +newline-regex@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/newline-regex/-/newline-regex-0.2.1.tgz#4696d869045ee1509b83aac3a58d4a93bbed926e" + integrity sha1-RpbYaQRe4VCbg6rDpY1Kk7vtkm4= + +newtype-ts@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/newtype-ts/-/newtype-ts-0.2.4.tgz#a02a8f160a3d179f871848d687a93de73a964a41" + integrity sha512-HrzPdG0+0FK1qHbc3ld/HXu252OYgmN993bFxUtZ6NFCLUk1eq+yKwdvP07BblXQibGqMWNXBUrNoLUq23Ma2Q== + dependencies: + fp-ts "^1.0.0" + monocle-ts "^1.0.0" + +next-tick@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-abi@^2.7.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.15.0.tgz#51d55cc711bd9e4a24a572ace13b9231945ccb10" + integrity sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg== + dependencies: + semver "^5.4.1" + +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-eta@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.9.0.tgz#9fb0b099bcd2a021940e603c64254dc003d9a7a8" + integrity sha1-n7CwmbzSoCGUDmA8ZCVNwAPZp6g= + +node-fetch@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= + +node-fetch@2.6.0, node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-object-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.0.0.tgz#9971fcdb7d254f05016bd9ccf508352bee11116b" + integrity sha512-VZR0zroAusy1ETZMZiGeLkdu50LGjG5U1KHZqTruqtTyQ2wfWhHG2Ow4nsUbfTFGlaREgNHcCWoM/OzEm6p+NQ== + +node-releases@^1.1.29, node-releases@^1.1.50: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + +node-releases@^1.1.53: + version "1.1.53" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" + integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== + +node-sass@^4.12.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1, normalize-url@^1.0.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +normalize-url@^3.0.0, normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== + dependencies: + path-key "^3.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +null-loader@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-0.1.1.tgz#17be9abfcd3ff0e1512f6fc4afcb1f5039378fae" + integrity sha1-F76av80/8OFRL2/Er8sfUDk3j64= + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +numeral@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" + integrity sha1-StCAk21EPCVhrtnyGX7//iX05QY= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-fit-images@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.4.tgz#6c299d38fdf207746e5d2d46c2877f6f25d15b52" + integrity sha512-G+7LzpYfTfqUyrZlfrou/PLLLAPNC52FTy5y1CBywX+1/FkxIloOyQXBmZ3Zxa2AWO+lMF0JTuvqbr7G5e5CWg== + +object-hash@^1.1.4, object-hash@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-hash@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1, object-is@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@^0.11.2, object-path@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +omggif@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^6.3.0, open@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +opencollective-postinstall@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + +opentracing@^0.14.4: + version "0.14.4" + resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.4.tgz#a113408ea740da3a90fde5b3b0011a375c2e4268" + integrity sha512-nNnZDkUNExBwEpb7LZaeMeQgvrlO8l4bgY/LvGNZCR0xG/dGWqHqjKrAmR5GUoYo0FIz38kxasvA1aevxWs2CA== + +opn@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + integrity sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg== + dependencies: + is-wsl "^1.1.0" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimism@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7" + integrity sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw== + dependencies: + "@wry/context" "^0.4.0" + +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +original@>=0.0.5, original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== + dependencies: + arch "^2.1.0" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU= + dependencies: + p-timeout "^1.1.1" + +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.0.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0, p-try@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@^1.0.5, pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-bmfont-ascii@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" + integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU= + +parse-bmfont-binary@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" + integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY= + +parse-bmfont-xml@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.4.5" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-headers@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" + integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +password-prompt@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" + integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + dependencies: + ansi-escapes "^3.1.0" + cross-spawn "^6.0.5" + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +path2d-polyfill@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/path2d-polyfill/-/path2d-polyfill-0.4.2.tgz#594d3103838ef6b9dd4a7fd498fe9a88f1f28531" + integrity sha512-JSeAnUfkFjl+Ml/EZL898ivMSbGHrOH63Mirx5EQ1ycJiryHDmj1Q7Are+uEPvenVGCUN9YbolfGfyUewJfJEg== + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + 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" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +phin@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" + integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== + +physical-cpu-count@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" + integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pixelmatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" + integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ= + dependencies: + pngjs "^3.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@2.0.0, pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +please-upgrade-node@^3.1.1, please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +pngjs@^3.0.0, pngjs@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngquant-bin@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-5.0.2.tgz#6f34f3e89c9722a72bbc509062b40f1b17cda460" + integrity sha512-OLdT+4JZx5BqE1CFJkrvomYV0aSsv6x2Bba+aWaVc0PMfWlE+ZByNKYAdKeIqsM4uvW1HOSEHnf8KcOnykPNxA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.1" + execa "^0.10.0" + logalot "^2.0.0" + +pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +pondjs@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/pondjs/-/pondjs-0.9.0.tgz#5c931233f8ef56852914eb669506eaac62b0f13b" + integrity sha512-fXgEYrWhgC/N3CVuXarG+/q54jar35Mqf7QPdl7z+mX5RkMyyjLfj9fMgY3oHv2hzMo9zkNx2kK62DrZuG3LXg== + dependencies: + "@babel/polyfill" "^7.7.0" + immutable "^3.6.4" + immutable-devtools "0.0.4" + moment "^2.24.0" + underscore "^1.9.1" + +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-flexbugs-fixes@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz#662b3dcb6354638b9213a55eed8913bcdc8d004a" + integrity sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ== + dependencies: + postcss "^7.0.26" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + +postcss@^6.0.1, postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.26, postcss@^7.0.27: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +potrace@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/potrace/-/potrace-2.1.2.tgz#61473a326be1e734abac6d14d54e1880eed35471" + integrity sha512-dNcUBapRgPkiv3j+70+rSlf0whtJJqEszC04g9a/Ll3p6kA7QVRV1Vsi3jg22voJr2jA9x9fjPbz5MdD+ngbUg== + dependencies: + jimp "^0.6.4" + +prebuild-install@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.3.tgz#ef4052baac60d465f5ba6bf003c9c1de79b9da8e" + integrity sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g== + dependencies: + detect-libc "^1.0.3" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + napi-build-utils "^1.0.1" + node-abi "^2.7.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^3.0.3" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^1.18.2: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +prettier@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= + +pretty-bytes@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + +pretty-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +probe-image-size@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-4.1.1.tgz#c836c53154b6dd04dbcf66af2bbd50087b15e1dc" + integrity sha512-42LqKZqTLxH/UvAZ2/cKhAsR4G/Y6B7i7fI2qtQu9hRBK4YjS6gqO+QRtwTjvojUx4+/+JuOMzLoFyRecT9qRw== + dependencies: + any-promise "^1.3.0" + deepmerge "^4.0.0" + inherits "^2.0.3" + next-tick "^1.0.0" + request "^2.83.0" + stream-parser "~0.3.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= + +progress@^2.0.0, progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.1.tgz#b63a9ce2809f106fa9ae1277c275b167af46ea05" + integrity sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prompts@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +property-information@^5.0.0, property-information@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" + integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA== + dependencies: + xtend "^4.0.0" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.1, pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + 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" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +raf-schd@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" + integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== + +raf@^3.1.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= + +ramda@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.0.tgz#915dc29865c0800bf3f69b8fd6c279898b59de43" + integrity sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA== + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + 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" + +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= + +rc@^1.2.7, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +re-reselect@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/re-reselect/-/re-reselect-3.4.0.tgz#0f2303f3c84394f57f0cd31fea08a1ca4840a7cd" + integrity sha512-JsecfN+JlckncVXTWFWjn0Vk6uInl8GSf4eEd9tTk5qXHlgqkPdILpnYpgZcISXNYAzvfvsCZviaDk8AxyS5sg== + +react-ace@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-7.0.5.tgz#798299fd52ddf3a3dcc92afc5865538463544f01" + integrity sha512-3iI+Rg2bZXCn9K984ll2OF4u9SGcJH96Q1KsUgs9v4M2WePS4YeEHfW2nrxuqJrAkE5kZbxaCE79k6kqK0YBjg== + dependencies: + brace "^0.11.1" + diff-match-patch "^1.0.4" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + prop-types "^15.7.2" + +react-apollo@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-3.1.5.tgz#36692d393c47e7ccc37f0a885c7cc5a8b4961c91" + integrity sha512-xOxMqxORps+WHrUYbjVHPliviomefOpu5Sh35oO3osuOyPTxvrljdfTLGCggMhcXBsDljtS5Oy4g+ijWg3D4JQ== + dependencies: + "@apollo/react-common" "^3.1.4" + "@apollo/react-components" "^3.1.5" + "@apollo/react-hoc" "^3.1.5" + "@apollo/react-hooks" "^3.1.5" + "@apollo/react-ssr" "^3.1.5" + +react-beautiful-dnd@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-10.1.1.tgz#d753088d77d7632e77cf8a8935fafcffa38f574b" + integrity sha512-TdE06Shfp56wm28EzjgC56EEMgGI5PDHejJ2bxuAZvZr8CVsbksklsJC06Hxf0MSL7FHbflL/RpkJck9isuxHg== + dependencies: + "@babel/runtime-corejs2" "^7.4.2" + css-box-model "^1.1.1" + memoize-one "^5.0.1" + prop-types "^15.6.1" + raf-schd "^4.0.0" + react-redux "^5.0.7" + redux "^4.0.1" + tiny-invariant "^1.0.4" + +react-broadcast@^0.7.0-rc.2: + version "0.7.1" + resolved "https://registry.yarnpkg.com/react-broadcast/-/react-broadcast-0.7.1.tgz#732c1f4d3c9dbb9dbf0b92540c7c2490fb746dfb" + integrity sha512-GhYhRBSSwys6dP++mlC2BNlKMgDfUCKAmOB7eyvgatsWk4TKY+sWVmkGkblP+QduHSBF/Rc+yTE2fZR+8+7Brw== + dependencies: + prop-types "^15.6.0" + warning "^3.0.0" + +react-clientside-effect@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837" + integrity sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A== + dependencies: + "@babel/runtime" "^7.0.0" + +react-dev-utils@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.3.tgz#5b42d9ea58d5e9e017a2f57a40a8af408a3a46fb" + integrity sha512-uvmkwl5uMexCmC0GUv1XGQP0YjfYePJufGg4YYiukhqk2vN1tQxwWJIBERqhOmSi80cppZg8mZnPP/kOMf1sUQ== + dependencies: + address "1.0.3" + babel-code-frame "6.26.0" + chalk "1.1.3" + cross-spawn "5.1.0" + detect-port-alt "1.1.3" + escape-string-regexp "1.0.5" + filesize "3.5.11" + global-modules "1.0.0" + gzip-size "3.0.0" + inquirer "3.3.0" + is-root "1.0.0" + opn "5.1.0" + react-error-overlay "^3.0.0" + recursive-readdir "2.2.1" + shell-quote "1.6.1" + sockjs-client "1.1.4" + strip-ansi "3.0.1" + text-table "0.2.0" + +react-dev-utils@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" + integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== + dependencies: + "@babel/code-frame" "7.5.5" + address "1.1.2" + browserslist "4.7.0" + chalk "2.4.2" + cross-spawn "6.0.5" + detect-port-alt "1.1.6" + escape-string-regexp "1.0.5" + filesize "3.6.1" + find-up "3.0.0" + fork-ts-checker-webpack-plugin "1.5.0" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "6.5.0" + is-root "2.1.0" + loader-utils "1.2.3" + open "^6.3.0" + pkg-up "2.0.0" + react-error-overlay "^6.0.3" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + sockjs-client "1.4.0" + strip-ansi "5.2.0" + text-table "0.2.0" + +react-dom@^16.12.0: + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.0.tgz#cdde54b48eb9e8a0ca1b3dc9943d9bb409b81866" + integrity sha512-y09d2c4cG220DzdlFkPTnVvGTszVvNpC73v+AaLGLHbkpy3SSgvYq8x0rNwPJ/Rk/CicTNgk0hbHNw1gMEZAXg== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.0" + +react-error-overlay@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-3.0.0.tgz#c2bc8f4d91f1375b3dad6d75265d51cd5eeaf655" + integrity sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw== + +react-error-overlay@^6.0.3: + version "6.0.6" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.6.tgz#ac4d9dc4c1b5c536c2c312bf66aa2b09bfa384e2" + integrity sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw== + +react-fast-compare@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-focus-lock@^1.17.7: + version "1.19.1" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-1.19.1.tgz#2f3429793edaefe2d077121f973ce5a3c7a0651a" + integrity sha512-TPpfiack1/nF4uttySfpxPk4rGZTLXlaZl7ncZg/ELAk24Iq2B1UUaUioID8H8dneUXqznT83JTNDHDj+kwryw== + dependencies: + "@babel/runtime" "^7.0.0" + focus-lock "^0.6.3" + prop-types "^15.6.2" + react-clientside-effect "^1.2.0" + +react-google-login@^5.1.14: + version "5.1.14" + resolved "https://registry.yarnpkg.com/react-google-login/-/react-google-login-5.1.14.tgz#7b35a8f3fc989132ed48f7db31d54fe4c5190b2a" + integrity sha512-locx4M80FGYLW7ej44GgMJV0Rj/n66/QHPpUzcu6kNbMmu1ziK7/f7smQ24YpOk1N2x8go7AvzaNN6qILyTA2Q== + dependencies: + "@types/react" "*" + prop-types "^15.6.0" + +react-helmet@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.2.1.tgz#16a7192fdd09951f8e0fe22ffccbf9bb3e591ffa" + integrity sha512-CnwD822LU8NDBnjCpZ4ySh8L6HYyngViTZLfBBb3NjtrpN8m49clH8hidHouq20I51Y6TpCTISCBbqiY5GamwA== + dependencies: + object-assign "^4.1.1" + prop-types "^15.5.4" + react-fast-compare "^2.0.2" + react-side-effect "^1.1.0" + +react-hot-loader@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.1.2.tgz#5e8025f5bc5605506586b46eb2c6cc4006fd54d7" + integrity sha512-7EFwgpJOx4AG4pwVifgr/ZNBPAxl2z424nGJPc/APB3F8YtCA3WdYuGlcerRK2C9vYAoqiiLw745IB3wjnzrRQ== + dependencies: + fast-levenshtein "^2.0.6" + global "^4.3.0" + hoist-non-react-statics "^2.5.0" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.2" + shallowequal "^1.0.2" + +react-hot-loader@^4.12.20: + version "4.12.20" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.20.tgz#c2c42362a7578e5c30357a5ff7afa680aa0bef8a" + integrity sha512-lPlv1HVizi0lsi+UFACBJaydtRYILWkfHAC/lyCs6ZlAxlOZRQIfYHDqiGaRvL/GF7zyti+Qn9XpnDAUvdFA4A== + dependencies: + fast-levenshtein "^2.0.6" + global "^4.3.0" + hoist-non-react-statics "^3.3.0" + loader-utils "^1.1.0" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + source-map "^0.7.3" + +react-input-autosize@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" + integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== + dependencies: + prop-types "^15.5.8" + +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.9.0: + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" + integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== + +react-is@~16.3.0: + version "16.3.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" + integrity sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q== + +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-measure@^2.2.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/react-measure/-/react-measure-2.3.0.tgz#75835d39abec9ae13517f35a819c160997a7a44e" + integrity sha512-dwAvmiOeblj5Dvpnk8Jm7Q8B4THF/f1l1HtKVi0XDecsG6LXwGvzV5R1H32kq3TW6RW64OAf5aoQxpIgLa4z8A== + dependencies: + "@babel/runtime" "^7.2.0" + get-node-dimensions "^1.2.1" + prop-types "^15.6.2" + resize-observer-polyfill "^1.5.0" + +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" + integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== + dependencies: + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" + +react-reconciler@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.24.0.tgz#5a396b2c2f5efe8554134a5935f49f546723f2dd" + integrity sha512-gAGnwWkf+NOTig9oOowqid9O0HjTDC+XVGBCAmJYYJ2A2cN/O4gDdIuuUQjv8A4v6GDwVfJkagpBBLW5OW9HSw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.18.0" + +react-redux@^5.0.7: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.2.tgz#b19cf9e21d694422727bf798e934a916c4080f57" + integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q== + dependencies: + "@babel/runtime" "^7.1.2" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + loose-envify "^1.1.0" + prop-types "^15.6.1" + react-is "^16.6.0" + react-lifecycles-compat "^3.0.0" + +react-redux@^7.1.0, react-redux@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" + integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== + dependencies: + "@babel/runtime" "^7.5.5" + hoist-non-react-statics "^3.3.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" + +react-refresh@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.7.2.tgz#f30978d21eb8cac6e2f2fde056a7d04f6844dd50" + integrity sha512-u5l7fhAJXecWUJzVxzMRU2Zvw8m4QmDNHlTrT5uo3KBlYBhmChd7syAakBoay1yIiVhx/8Fi7a6v6kQZfsw81Q== + +react-side-effect@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-1.2.0.tgz#0e940c78faba0c73b9b0eba9cd3dda8dfb7e7dae" + integrity sha512-v1ht1aHg5k/thv56DRcjw+WtojuuDHFUgGfc+bFHOWsF4ZK6C2V57DO0Or0GPsg6+LSTE0M6Ry/gfzhzSwbc5w== + dependencies: + shallowequal "^1.0.1" + +react-timeseries-charts@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/react-timeseries-charts/-/react-timeseries-charts-0.16.1.tgz#46675a41a7806155a0b5a1342e3b811172845a5c" + integrity sha512-WK2Pege5/FGrE5ifGX1XTVQOZkobRUV5YMwRQi4+TpYAALL5cBLp+XCuAX8x8agq4AmqChpClPIrANc8pRL5RA== + dependencies: + array.prototype.fill "^1.0.1" + babel-runtime "^6.23.0" + colorbrewer "^1.0.0" + d3-axis "^1.0.8" + d3-ease "^1.0.3" + d3-format "^1.2.0" + d3-interpolate "^1.1.5" + d3-scale "^1.0.6" + d3-scale-chromatic "^1.1.1" + d3-selection "^1.1.0" + d3-selection-multi "^1.0.1" + d3-shape "^1.2.0" + d3-time "^1.0.7" + d3-time-format "^2.0.5" + d3-transition "^1.1.0" + dom-resize "^1.0.3" + invariant "^2.1.1" + merge "^1.2.0" + moment "^2.18.1" + moment-duration-format "^1.3.0" + prop-types "^15.5.10" + react-hot-loader "4.1.2" + underscore "^1.8.3" + +react-virtualized@^9.21.2: + version "9.21.2" + resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.21.2.tgz#02e6df65c1e020c8dbf574ec4ce971652afca84e" + integrity sha512-oX7I7KYiUM7lVXQzmhtF4Xg/4UA5duSA+/ZcAvdWlTLFCoFYq1SbauJT5gZK9cZS/wdYR6TPGpX/dqzvTqQeBA== + dependencies: + babel-runtime "^6.26.0" + clsx "^1.0.1" + dom-helpers "^5.0.0" + loose-envify "^1.3.0" + prop-types "^15.6.0" + react-lifecycles-compat "^3.0.4" + +react@16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +react@^16.12.0, react@^16.8.0: + version "16.13.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.0.tgz#d046eabcdf64e457bbeed1e792e235e1b9934cf7" + integrity sha512-TSavZz2iSLkq5/oiE7gnFzmURKZMltmi193rm5HEoUDAXpzT9Kzw6oNZnGoai/4+fUnm7FqS5dwgUL34TujcWQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-chunk@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" + integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== + dependencies: + pify "^4.0.1" + with-open-file "^0.1.6" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + 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" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + +recompose@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" + integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + +recursive-readdir@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" + integrity sha1-kO8jHQd4xc4JPJpI105cVCLROpk= + dependencies: + minimatch "3.0.3" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redux-thunk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== + +redux@^4.0.1, redux@^4.0.4, redux@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.3.tgz#54aebff2ef58c0ae61e695ad1b9a9d65995fff78" + integrity sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + +regexpu-core@^4.5.4, regexpu-core@^4.6.0, regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +registry-auth-token@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remark-footnotes@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-1.0.0.tgz#9c7a97f9a89397858a50033373020b1ea2aad011" + integrity sha512-X9Ncj4cj3/CIvLI2Z9IobHtVi8FVdUrdJkCNaL9kdX8ohfsi18DXHsCVd/A7ssARBdccdDb5ODnt62WuEWaM/g== + +remark-mdx@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.1.tgz#693aa40d0c98afdd556e7e50f2ca263d0a845e19" + integrity sha512-UyCqqYFv9l5dstX29QpdqMprBHyUYUEQHOUe0MdFUIm1XATxfVGHbRPtVBFz4ccd5NV1UL/rmsruo9WOswwmpQ== + dependencies: + "@babel/core" "7.9.0" + "@babel/helper-plugin-utils" "7.8.3" + "@babel/plugin-proposal-object-rest-spread" "7.9.5" + "@babel/plugin-syntax-jsx" "7.8.3" + "@mdx-js/util" "^1.6.1" + is-alphabetical "1.0.4" + remark-parse "8.0.2" + unified "9.0.0" + +remark-parse@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b" + integrity sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ== + dependencies: + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" + +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== + dependencies: + mdast-squeeze-paragraphs "^4.0.0" + +remark-stringify@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.0.0.tgz#33423ab8bf3076fb197f4cf582aaaf866b531625" + integrity sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^2.0.0" + mdast-util-compact "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^3.0.0" + unherit "^1.0.4" + xtend "^4.0.1" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-ext@1.0.0, replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +request@^2.81.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== + +resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +responselike@1.0.2, responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= + dependencies: + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" + +run-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sass-loader@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" + integrity sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^6.3.0" + +sax@>=0.6.0, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scheduler@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.0.tgz#a715d56302de403df742f4a9be11975b32f5698d" + integrity sha512-xowbVaTPe9r7y7RUejcK73/j8tt2jfiyTednOvHbA8JoClvMYCp+r8QegLwK/n8zWQAtZb1fFnER4XLBZXrCxA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.1: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.6.6" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" + integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +scroll-behavior@^0.9.10: + version "0.9.12" + resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.12.tgz#1c22d273ec4ce6cd4714a443fead50227da9424c" + integrity sha512-18sirtyq1P/VsBX6O/vgw20Np+ngduFXEMO4/NDFXabdOKBL2kjPVUpz1y0+jm99EWwFJafxf5/tCyMeXt9Xyg== + dependencies: + dom-helpers "^3.4.0" + invariant "^2.2.4" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + dependencies: + semver "^5.0.3" + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver-truncate@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g= + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + 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" + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + 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" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallow-compare@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/shallow-compare/-/shallow-compare-1.2.2.tgz#fa4794627bf455a47c4f56881d8a6132d581ffdb" + integrity sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg== + +shallowequal@^1.0.1, shallowequal@^1.0.2, shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +sharp@^0.23.4: + version "0.23.4" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.23.4.tgz#ca36067cb6ff7067fa6c77b01651cb9a890f8eb3" + integrity sha512-fJMagt6cT0UDy9XCsgyLi0eiwWWhQRxbwGmqQT6sY8Av4s0SVsT/deg8fobBQCTDU5iXRgz0rAeXoE2LBZ8g+Q== + dependencies: + color "^3.1.2" + detect-libc "^1.0.3" + nan "^2.14.0" + npmlog "^4.1.2" + prebuild-install "^5.3.3" + semver "^6.3.0" + simple-get "^3.1.0" + tar "^5.0.5" + tunnel-agent "^0.6.0" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + +sift@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/sift/-/sift-5.1.0.tgz#1bbf2dfb0eb71e56c4cc7fb567fbd1351b65015e" + integrity sha1-G78t+w63HlbEzH+1Z/vRNRtlAV4= + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + +simple-get@^3.0.3, simple-get@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" + integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +single-trailing-newline@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/single-trailing-newline/-/single-trailing-newline-1.0.0.tgz#81f0ad2ad645181945c80952a5c1414992ee9664" + integrity sha1-gfCtKtZFGBlFyAlSpcFBSZLulmQ= + dependencies: + detect-newline "^1.0.3" + +sisteransi@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slugify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.0.tgz#c9557c653c54b0c7f7a8e786ef3431add676d2cb" + integrity sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + +socket.io-client@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~4.1.0" + engine.io-client "~3.4.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io-parser@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.0.tgz#370bb4a151df2f77ce3345ff55a7072cc6e9565a" + integrity sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ== + dependencies: + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" + integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== + dependencies: + debug "~4.1.0" + engine.io "~3.4.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.3.0" + socket.io-parser "~3.4.0" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + integrity sha1-W6vjhrd15M8U51IJEUUmVAFsixI= + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.7.3, source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM= + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-trace@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +stack-utils@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +stackframe@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" + integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-parser@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" + integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M= + dependencies: + debug "2" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-argv@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-similarity@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.2.2.tgz#99b2c20a3c9bbb3903964eae1d89856db3d8db9b" + integrity sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ== + dependencies: + lodash.every "^4.6.0" + lodash.flattendeep "^4.4.0" + lodash.foreach "^4.5.0" + lodash.map "^4.6.0" + lodash.maxby "^4.6.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trim@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" + integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.0.0.tgz#455abe501f8b7859ba5726a25a8872333c65b0a7" + integrity sha512-h7NJJIssprqlyjHT2eQt2W1F+MCcNmwPGlKb0bWEdET/3N44QN3QbUF/ueKCgAssyKRZ3Br9rQ7FcXjHr0qLHw== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.2" + is-hexadecimal "^1.0.0" + +stringify-object@^3.2.2, stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@3.0.1, strip-ansi@^3, strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +strip-url-auth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-url-auth/-/strip-url-auth-1.0.1.tgz#22b0fa3a41385b33be3f331551bbb837fa0cd7ae" + integrity sha1-IrD6OkE4WzO+PzMVUbu4N/oM164= + +style-loader@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +style-to-object@0.3.0, style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + +style-to-object@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" + integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== + dependencies: + inline-style-parser "0.1.1" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +subscriptions-transport-ws@^0.9.16: + version "0.9.16" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec" + integrity sha512-pQdoU7nC+EpStXnCfh/+ho0zE0Z+ma+i7xvj7bkXKb1dvYHSZxgRPaU6spRP+Bjzow67c/rRDoix5RT0uU9omw== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0" + +sudo-prompt@^8.2.0: + version "8.2.5" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" + integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svg-tag-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/svg-tag-names/-/svg-tag-names-2.0.1.tgz#acf5655faaa2e4b173007599226b906be1b38a29" + integrity sha512-BEZ508oR+X/b5sh7bT0RqDJ7GhTpezjj3P1D4kugrOaPs6HijviWksoQ63PS81vZn0QCjZmVKjHDBniTo+Domg== + +svgo@1.3.2, svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.0.2, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +tabbable@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" + integrity sha512-wjB6puVXTYO0BSFtCmWQubA/KIn7Xvajw0x0l6eJUudMG/EAiJvIUnyNX6xO4NpGrJ16lbD0eUseB9WxW0vlpQ== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar-fs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.0.tgz#677700fc0c8b337a78bee3623fdc235f21d7afad" + integrity sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA== + dependencies: + chownr "^1.1.1" + mkdirp "^0.5.1" + pump "^3.0.0" + tar-stream "^2.0.0" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar-stream@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" + integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== + dependencies: + bl "^4.0.1" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-5.0.5.tgz#03fcdb7105bc8ea3ce6c86642b9c942495b04f93" + integrity sha512-MNIgJddrV2TkuwChwcSNds/5E9VijOiw7kAc1y5hTNJoLDSuIyid2QtLYiCYNnICebpuvjhPQZsXwUL0O3l7OQ== + dependencies: + chownr "^1.1.3" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.0" + mkdirp "^0.5.0" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + dependencies: + execa "^0.7.0" + +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + +terminal-link@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timm@^1.6.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/timm/-/timm-1.6.2.tgz#dfd8c6719f7ba1fcfc6295a32670a1c6d166c0bd" + integrity sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw== + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.4, tiny-invariant@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tinycolor2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +topo@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI= + dependencies: + hoek "4.x.x" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +trim-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" + integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + +trim-trailing-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +ts-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ts-debounce/-/ts-debounce-1.0.0.tgz#e433301744ba75fe25466f7f23e1382c646aae6a" + integrity sha512-V+IzWj418IoqqxVJD6I0zjPtgIyvAJ8VyViqzcxZ0JRiJXsi5mCmy1yUKkWd2gUygT28a8JsVFCgqdrf2pLUHQ== + +ts-invariant@^0.4.0, ts-invariant@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + +ts-pnp@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.0, type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" + integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.5.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + +ua-parser-js@^0.7.18: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + +unbzip2-stream@^1.0.9: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" + integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +underscore@^1.8.3, underscore@^1.9.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" + integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unified@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.0.0.tgz#12b099f97ee8b36792dbad13d278ee2f696eed1d" + integrity sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== + +unist-util-generated@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" + integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-is@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" + integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ== + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== + dependencies: + unist-util-visit "^2.0.0" + +unist-util-remove@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.0.tgz#32c2ad5578802f2ca62ab808173d505b2c898488" + integrity sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g== + dependencies: + unist-util-is "^4.0.0" + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz#d4076af3011739c71d2ce99d05de37d545f4351d" + integrity sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@2.0.2, unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.2.tgz#3843782a517de3d2357b4c193b24af2d9366afb7" + integrity sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" + integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== + dependencies: + boxen "^3.0.0" + chalk "^2.0.1" + configstore "^4.0.0" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.1.0" + is-npm "^3.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +urql@^1.9.7: + version "1.9.7" + resolved "https://registry.yarnpkg.com/urql/-/urql-1.9.7.tgz#d3970a3af4a9d46528ec7c2f2e9839944875d8bf" + integrity sha512-zMLVeoAzY+C/RQGXjYYNC/XMqzMoyF1xjMNELTz4FNwXMEnk1wfCbgcQBbHyRVPql/9/CjY9Igq7AxUfY67Y5Q== + dependencies: + "@urql/core" "^1.11.0" + wonka "^4.0.9" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utif@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" + integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== + dependencies: + pako "^1.0.5" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.1, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utility-types@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@3.4.0, uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" + integrity sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +valid-url@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vfile-location@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3" + integrity sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ== + +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.0.tgz#d79248957f43225d57ff67a56effc67bef08946e" + integrity sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +vscode-json-languageservice@^3.2.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.5.1.tgz#75779d466107cbc8c4cc9828df100df71c1870f8" + integrity sha512-F8jPqcAC1mbQOMKvGYS4dGEw9JCZxVEi7tc5ASZLfcfwKq2URZKB4fOtdy1GEsTLsrW11tVrBjEPntpXzqp/NA== + dependencies: + jsonc-parser "^2.2.1" + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "^3.15.1" + vscode-nls "^4.1.1" + vscode-uri "^2.1.1" + +vscode-languageserver-textdocument@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f" + integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA== + +vscode-languageserver-types@^3.15.1: + version "3.15.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== + +vscode-nls@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167" + integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw== + +vscode-uri@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.1.tgz#5aa1803391b6ebdd17d047f51365cf62c38f6e90" + integrity sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A== + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-namespaces@^1.0.0, web-namespaces@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.6" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +webpack-hot-middleware@^2.25.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" + integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== + dependencies: + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-stats-plugin@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.3.1.tgz#1103c39a305a4e6ba15d5078db84bc0b35447417" + integrity sha512-pxqzFE055NlNTlNyfDG3xlB2QwT1EWdm/CF5dCJI/e+rRHVxrWhWg1rf1lfsWhI1/EePv8gi/A36YxO/+u0FgQ== + +webpack@~4.41.6: + version "4.41.6" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.6.tgz#12f2f804bf6542ef166755050d4afbc8f66ba7e1" + integrity sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +widest-line@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== + dependencies: + string-width "^2.1.1" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +with-open-file@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729" + integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== + dependencies: + p-finally "^1.0.0" + p-try "^2.1.0" + pify "^4.0.1" + +wonka@^4.0.10, wonka@^4.0.9: + version "4.0.13" + resolved "https://registry.yarnpkg.com/wonka/-/wonka-4.0.13.tgz#8d188160bd5742870c78ede7a4eba686d089a33f" + integrity sha512-aWg92IVvbP/kp+q9rw+k/Uw3C/S2J0dTDNhEhivGVH3GXJZgpFk2nuyVtiS7Y1d0UG3m4jvOrR7bPXim6D/TBg== + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" + integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q== + dependencies: + workbox-core "^3.6.3" + +workbox-broadcast-cache-update@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" + integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg== + dependencies: + workbox-core "^3.6.3" + +workbox-build@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" + integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g== + dependencies: + babel-runtime "^6.26.0" + common-tags "^1.4.0" + fs-extra "^4.0.2" + glob "^7.1.2" + joi "^11.1.1" + lodash.template "^4.4.0" + pretty-bytes "^4.0.2" + stringify-object "^3.2.2" + strip-comments "^1.0.2" + workbox-background-sync "^3.6.3" + workbox-broadcast-cache-update "^3.6.3" + workbox-cache-expiration "^3.6.3" + workbox-cacheable-response "^3.6.3" + workbox-core "^3.6.3" + workbox-google-analytics "^3.6.3" + workbox-navigation-preload "^3.6.3" + workbox-precaching "^3.6.3" + workbox-range-requests "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + workbox-streams "^3.6.3" + workbox-sw "^3.6.3" + +workbox-cache-expiration@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" + integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA== + dependencies: + workbox-core "^3.6.3" + +workbox-cacheable-response@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" + integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg== + dependencies: + workbox-core "^3.6.3" + +workbox-core@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" + integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ== + +workbox-google-analytics@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" + integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig== + dependencies: + workbox-background-sync "^3.6.3" + workbox-core "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + +workbox-navigation-preload@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" + integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw== + dependencies: + workbox-core "^3.6.3" + +workbox-precaching@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" + integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw== + dependencies: + workbox-core "^3.6.3" + +workbox-range-requests@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" + integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A== + dependencies: + workbox-core "^3.6.3" + +workbox-routing@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" + integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ== + dependencies: + workbox-core "^3.6.3" + +workbox-strategies@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" + integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g== + dependencies: + workbox-core "^3.6.3" + +workbox-streams@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" + integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w== + dependencies: + workbox-core "^3.6.3" + +workbox-sw@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" + integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg== + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^5.0.0, wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.0.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.1.2: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + +ws@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" + integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xhr@^2.0.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" + integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" + integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= + +xml2js@^0.4.5: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + +xstate@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.8.0.tgz#1aefa1f7828f84f61c356785615ffc0824ebf5a2" + integrity sha512-xHSYQtCHLkcrFRxa5lK4Lp1rnKt00a80jcKFMQiMBuE+6MvTYv7twwqYpzjsJoKFjGZB3GGEpZAuY1dmlPTh/g== + +xstate@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.9.1.tgz#da883ae0993b129ba0b54592c59b069963b0fe0a" + integrity sha512-cfNnRaBebnr1tvs0nHBUTyomfJx36+8MWwXceyNTZfjyELMM8nIoiBDcUzfKmpNlnAvs2ZPREos19cw6Zl4nng== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.0.0, yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-loader@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.5.0.tgz#86b1982d84a8e429e6647d93de9a0169e1c15827" + integrity sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A== + dependencies: + js-yaml "^3.5.2" + +yaml@^1.7.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + dependencies: + "@babel/runtime" "^7.8.7" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs@12.0.5, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.2.4: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= + +yoga-layout-prebuilt@^1.9.3: + version "1.9.5" + resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.9.5.tgz#bb25ae106eb4ba48c13b650e75269c582a8b43e5" + integrity sha512-+G5Ojl4/sG78mk5masCL3SRaZtkKXRBhMGf5c+4C1j32jN9KpS4lxVFdYyBi15EHN4gMeK5sIRf83T33TOaDkA== + dependencies: + "@types/yoga-layout" "1.9.1" + +yurnalist@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.1.2.tgz#0fce283f1c53ea25ec278e2d1ab58537323b63e0" + integrity sha512-y7bsTXqL+YMJQ2De2CBtSftJNLQnB7gWIzzKm10GDyC8Fg4Dsmd2LG5YhT8pudvUiuotic80WVXt/g1femRVQg== + dependencies: + babel-runtime "^6.26.0" + chalk "^2.4.2" + cli-table3 "^0.5.1" + debug "^4.1.1" + deep-equal "^1.1.0" + detect-indent "^6.0.0" + inquirer "^7.0.0" + invariant "^2.2.0" + is-builtin-module "^3.0.0" + is-ci "^2.0.0" + leven "^3.1.0" + loud-rejection "^2.2.0" + node-emoji "^1.10.0" + object-path "^0.11.2" + read "^1.0.7" + rimraf "^3.0.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + strip-bom "^4.0.0" + +zen-observable-ts@^0.8.21: + version "0.8.21" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" + integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + +zen-observable@^0.8.0: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== diff --git a/app/go.mod b/app/go.mod new file mode 100644 index 0000000..ff62267 --- /dev/null +++ b/app/go.mod @@ -0,0 +1,41 @@ +module github.com/adrianlzt/piclimbing/backend + +go 1.14 + +require ( + github.com/99designs/gqlgen v0.11.3 + github.com/cdreier/golang-snippets v0.0.0-20190521112639-8280380daefe + github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect + github.com/davidrjenni/reftools v0.0.0-20191222082827-65925cf01315 // indirect + github.com/go-chi/chi v3.3.2+incompatible + github.com/go-chi/cors v1.1.1 // indirect + github.com/go-logr/logr v0.1.0 + github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee // indirect + github.com/gobwas/pool v0.2.0 // indirect + github.com/gobwas/ws v1.0.3 // indirect + github.com/gorilla/websocket v1.4.2 + github.com/gvalkov/golang-evdev v0.0.0-20191114124502-287e62b94bcb + github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d // indirect + github.com/markbates/pkger v0.15.1 + github.com/matryer/moq v0.0.0-20200310130814-7721994d1b54 // indirect + github.com/mitchellh/mapstructure v1.3.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.6.0 // indirect + github.com/prometheus/common v0.9.1 // indirect + github.com/rs/cors v1.6.0 + github.com/stretchr/testify v1.5.1 + github.com/toqueteos/webbrowser v1.2.0 + github.com/unknwon/bra v0.0.0-20191020212106-9f09ca301444 // indirect + github.com/urfave/cli/v2 v2.2.0 // indirect + github.com/vektah/dataloaden v0.3.0 // indirect + github.com/vektah/gqlparser/v2 v2.0.1 + go.etcd.io/bbolt v1.3.4 // indirect + golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770 // indirect + gonum.org/v1/gonum v0.7.0 + gopkg.in/yaml.v2 v2.2.8 // indirect + k8s.io/klog v1.0.0 +) + +// https://github.com/99designs/gqlgen/issues/1179 +replace github.com/99designs/gqlgen => github.com/adrianlzt/gqlgen v0.11.3-1 diff --git a/app/go.sum b/app/go.sum new file mode 100644 index 0000000..b677252 --- /dev/null +++ b/app/go.sum @@ -0,0 +1,277 @@ +github.com/99designs/gqlgen v0.11.3 h1:oFSxl1DFS9X///uHV3y6CEfpcXWrDUxVblR4Xib2bs4= +github.com/99designs/gqlgen v0.11.3/go.mod h1:RgX5GRRdDWNkh4pBrdzNpNPFVsdoUFY2+adM6nb1N+4= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/adrianlzt/gqlgen v0.11.3-1 h1:8qoxpsePizzNvm+Pnbbqkc73j6SOdubfrK4/bvqOwYM= +github.com/adrianlzt/gqlgen v0.11.3-1/go.mod h1:RgX5GRRdDWNkh4pBrdzNpNPFVsdoUFY2+adM6nb1N+4= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/agnivade/levenshtein v1.0.3 h1:M5ZnqLOoZR8ygVq0FfkXsNOKzMCk0xRiow0R5+5VkQ0= +github.com/agnivade/levenshtein v1.0.3/go.mod h1:4SFRZbbXWLF4MU1T9Qg0pGgH3Pjs+t6ie5efyrwRJXs= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 h1:Hs82Z41s6SdL1CELW+XaDYmOH4hkBN4/N9og/AsOv7E= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cdreier/golang-snippets v0.0.0-20190521112639-8280380daefe h1:sOn4JnYs22FV4ErsMPy7ZBOiguDHsD//P4lUMythCtk= +github.com/cdreier/golang-snippets v0.0.0-20190521112639-8280380daefe/go.mod h1:KoN3QURySkkx4RvrHrNi72TGA5HsyMl+EObF5TMf0Po= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidrjenni/reftools v0.0.0-20191222082827-65925cf01315 h1:iPnw+GH24L2yS/xxsp16Lv86aM0ZVwqANxHic/gMrSc= +github.com/davidrjenni/reftools v0.0.0-20191222082827-65925cf01315/go.mod h1:QXiCu8WKyFL/X+NMCmtxoCq/jSOb54R4iDXdjsaYEWA= +github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c h1:TUuUh0Xgj97tLMNtWtNvI9mIV6isjEb9lBMNv+77IGM= +github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-chi/chi v3.3.2+incompatible h1:uQNcQN3NsV1j4ANsPh42P4ew4t6rnRbJb8frvpp31qQ= +github.com/go-chi/chi v3.3.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/cors v1.1.1 h1:eHuqxsIw89iXcWnWUN8R72JMibABJTN/4IOYI5WERvw= +github.com/go-chi/cors v1.1.1/go.mod h1:K2Yje0VW/SJzxiyMYu6iPQYa7hMjQX2i/F491VChg1I= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI= +github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.3 h1:ZOigqf7iBxkA4jdQ3am7ATzdlOFp9YzA6NmuvEEZc9g= +github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v1.2.0 h1:VJtLvh6VQym50czpZzx07z/kw9EgAxI3x1ZB8taTMQQ= +github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gvalkov/golang-evdev v0.0.0-20191114124502-287e62b94bcb h1:WHSAxLz3P5t4DKukfJ5wu7+aMyVkuTNSbCiAjVS92sM= +github.com/gvalkov/golang-evdev v0.0.0-20191114124502-287e62b94bcb/go.mod h1:SAzVFKCRezozJTGavF3GX8MBUruETCqzivVLYiywouA= +github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/markbates/pkger v0.15.1 h1:3MPelV53RnGSW07izx5xGxl4e/sdRD6zqseIk0rMASY= +github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= +github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007 h1:reVOUXwnhsYv/8UqjvhrMOu5CNT9UapHFLbQ2JcXsmg= +github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/matryer/moq v0.0.0-20200310130814-7721994d1b54 h1:p8zN0Xu28xyEkPpqLbFXAnjdgBVvTJCpfOtoDf/+/RQ= +github.com/matryer/moq v0.0.0-20200310130814-7721994d1b54/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/mapstructure v0.0.0-20180203102830-a4e142e9c047 h1:zCoDWFD5nrJJVjbXiDZcVhOBSzKn3o9LgRLLMRNuru8= +github.com/mitchellh/mapstructure v0.0.0-20180203102830-a4e142e9c047/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.0 h1:iDwIio/3gk2QtLLEsqU5lInaMzos0hDTz8a6lazSFVw= +github.com/mitchellh/mapstructure v1.3.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.6.0 h1:YVPodQOcK15POxhgARIvnDRVpLcuK8mglnMrWfyrw6A= +github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= +github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/toqueteos/webbrowser v1.2.0 h1:tVP/gpK69Fx+qMJKsLE7TD8LuGWPnEV71wBN9rrstGQ= +github.com/toqueteos/webbrowser v1.2.0/go.mod h1:XWoZq4cyp9WeUeak7w7LXRUQf1F1ATJMir8RTqb4ayM= +github.com/unknwon/bra v0.0.0-20191020212106-9f09ca301444 h1:bQnhF5P4P3o+OqFxbmQa5vQ/DZ41dJkfjAOlbCkoo94= +github.com/unknwon/bra v0.0.0-20191020212106-9f09ca301444/go.mod h1:fVle4kNr08ydeohzYafr20oZzbAkhQT39gKK/pFQ5M4= +github.com/unknwon/com v1.0.1 h1:3d1LTxD+Lnf3soQiD4Cp/0BRB+Rsa/+RTvz8GMMzIXs= +github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM= +github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3 h1:4EYQaWAatQokdji3zqZloVIW/Ke1RQjYw2zHULyrHJg= +github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3/go.mod h1:1xEUf2abjfP92w2GZTV+GgaRxXErwRXcClbUwrNJffU= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.1.1 h1:Qt8FeAtxE/vfdrLmR3rxR6JRE0RoVmbXu8+6kZtYU4k= +github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= +github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e h1:+w0Zm/9gaWpEAyDlU1eKOuk5twTjAjuevXqcJJw8hrg= +github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U= +github.com/vektah/dataloaden v0.3.0 h1:ZfVN2QD6swgvp+tDqdH/OIT/wu3Dhu0cus0k5gIZS84= +github.com/vektah/dataloaden v0.3.0/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U= +github.com/vektah/gqlparser/v2 v2.0.1 h1:xgl5abVnsd4hkN9rk65OJID9bfcLSMuTaTcZj777q1o= +github.com/vektah/gqlparser/v2 v2.0.1/go.mod h1:SyUiHgLATUR8BiYURfTirrTcGpcE+4XkV2se04Px1Ms= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= +go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2 h1:y102fOLFqhV41b+4GPiJoa0k/x+pJcEi2/HB1Y5T6fU= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191020152052-9984515f0562/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f h1:gWF768j/LaZugp8dyS4UwsslYCYz9XgFxvlgsn0n9H8= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190408220357-e5b8258f4918/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200114235610-7ae403b6b589 h1:rjUrONFu4kLchcZTfp3/96bR8bW8dIa8uz3cR5n0cgM= +golang.org/x/tools v0.0.0-20200114235610-7ae403b6b589/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770 h1:M9Fif0OxNji8w+HvmhVQ8KJtiZOsjU9RgslJGhn95XE= +golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.7.0 h1:Hdks0L0hgznZLG9nzXb8vZ0rRvqNvAcgAp84y7Mwkgw= +gonum.org/v1/gonum v0.7.0/go.mod h1:L02bwd0sqlsvRv41G7wGWFCsVNZFv/k1xzGIxeANHGM= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify/fsnotify.v1 v1.4.7 h1:XNNYLJHt73EyYiCZi6+xjupS9CpvmiDgjPTAjrBlQbo= +gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5 h1:ymVxjfMaHvXD8RqPRmzHHsB3VvucivSkIAvJFDI5O3c= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +sourcegraph.com/sourcegraph/appdash v0.0.0-20180110180208-2cc67fd64755/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k= diff --git a/app/gqlgen.yml b/app/gqlgen.yml new file mode 100644 index 0000000..0e926c1 --- /dev/null +++ b/app/gqlgen.yml @@ -0,0 +1,56 @@ +# Where are all the schema files located? globs are supported eg src/**/*.graphqls +schema: + - graph/*.graphqls + +# Where should the generated server code go? +exec: + filename: graph/generated/generated.go + package: generated + +# Uncomment to enable federation +# federation: +# filename: graph/generated/federation.go +# package: generated + +# Where should any generated models go? +model: + filename: graph/model/models_gen.go + package: model + +# Where should the resolver implementations go? +resolver: + layout: follow-schema + dir: graph + package: graph + +# Optional: turn on use `gqlgen:"fieldName"` tags in your models +# struct_tag: json + +# Optional: turn on to use []Thing instead of []*Thing +# omit_slice_element_pointers: false + +# Optional: set to speed up generation time by not performing a final validation pass. +# skip_validation: true + +# gqlgen will search for any type names in the schema in these go packages +# if they match it will use them, otherwise it will generate them. +autobind: + - "github.com/adrianlzt/piclimbing/backend/graph/model" + +# This section declares type mapping between the GraphQL and go type systems +# +# The first line in each type will be used as defaults for resolver arguments and +# modelgen, the others will be allowed when binding to fields. Configure them to +# your liking +models: + ID: + model: + - github.com/99designs/gqlgen/graphql.ID + - github.com/99designs/gqlgen/graphql.Int + - github.com/99designs/gqlgen/graphql.Int64 + - github.com/99designs/gqlgen/graphql.Int32 + Int: + model: + - github.com/99designs/gqlgen/graphql.Int + - github.com/99designs/gqlgen/graphql.Int64 + - github.com/99designs/gqlgen/graphql.Int32 diff --git a/app/graph/generated/generated.go b/app/graph/generated/generated.go new file mode 100644 index 0000000..bf675d4 --- /dev/null +++ b/app/graph/generated/generated.go @@ -0,0 +1,4196 @@ +// Code generated by github.com/99designs/gqlgen, DO NOT EDIT. + +package generated + +import ( + "bytes" + "context" + "errors" + "io" + "strconv" + "sync" + + "github.com/99designs/gqlgen/graphql" + "github.com/99designs/gqlgen/graphql/introspection" + "github.com/adrianlzt/piclimbing/backend/graph/model" + gqlparser "github.com/vektah/gqlparser/v2" + "github.com/vektah/gqlparser/v2/ast" +) + +// region ************************** generated!.gotpl ************************** + +// NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface. +func NewExecutableSchema(cfg Config) graphql.ExecutableSchema { + return &executableSchema{ + resolvers: cfg.Resolvers, + directives: cfg.Directives, + complexity: cfg.Complexity, + } +} + +type Config struct { + Resolvers ResolverRoot + Directives DirectiveRoot + Complexity ComplexityRoot +} + +type ResolverRoot interface { + Mutation() MutationResolver + Subscription() SubscriptionResolver +} + +type DirectiveRoot struct { +} + +type ComplexityRoot struct { + Coach struct { + Message func(childComplexity int) int + Status func(childComplexity int) int + } + + CommandResponse struct { + Message func(childComplexity int) int + } + + Mutation struct { + SpeedCommand func(childComplexity int, params *model.SpeedCommand) int + StrengthCommand func(childComplexity int, params *model.StrengthCommand) int + } + + Query struct { + } + + Speed struct { + ID func(childComplexity int) int + LastSpeed func(childComplexity int) int + MaxSpeed func(childComplexity int) int + Position func(childComplexity int) int + PullUps func(childComplexity int) int + Speed func(childComplexity int) int + SpeedLoss func(childComplexity int) int + } + + SpeedCommandBackend struct { + Command func(childComplexity int) int + Value func(childComplexity int) int + } + + Strength struct { + AvgStrength func(childComplexity int) int + DutyCycle func(childComplexity int) int + Fti func(childComplexity int) int + Interval func(childComplexity int) int + MaxStrength func(childComplexity int) int + Rfd func(childComplexity int) int + Strength func(childComplexity int) int + StrengthLoss func(childComplexity int) int + Time func(childComplexity int) int + } + + StrengthCommandBackend struct { + Command func(childComplexity int) int + Value func(childComplexity int) int + } + + Subscription struct { + Coach func(childComplexity int) int + Speed func(childComplexity int) int + SpeedBackendCommands func(childComplexity int) int + Strength func(childComplexity int) int + StrengthBackendCommands func(childComplexity int) int + } +} + +type MutationResolver interface { + StrengthCommand(ctx context.Context, params *model.StrengthCommand) (*model.CommandResponse, error) + SpeedCommand(ctx context.Context, params *model.SpeedCommand) (*model.CommandResponse, error) +} +type SubscriptionResolver interface { + Speed(ctx context.Context) (<-chan *model.Speed, error) + Strength(ctx context.Context) (<-chan *model.Strength, error) + Coach(ctx context.Context) (<-chan *model.Coach, error) + StrengthBackendCommands(ctx context.Context) (<-chan *model.StrengthCommandBackend, error) + SpeedBackendCommands(ctx context.Context) (<-chan *model.SpeedCommandBackend, error) +} + +type executableSchema struct { + resolvers ResolverRoot + directives DirectiveRoot + complexity ComplexityRoot +} + +func (e *executableSchema) Schema() *ast.Schema { + return parsedSchema +} + +func (e *executableSchema) Complexity(typeName, field string, childComplexity int, rawArgs map[string]interface{}) (int, bool) { + ec := executionContext{nil, e} + _ = ec + switch typeName + "." + field { + + case "Coach.message": + if e.complexity.Coach.Message == nil { + break + } + + return e.complexity.Coach.Message(childComplexity), true + + case "Coach.status": + if e.complexity.Coach.Status == nil { + break + } + + return e.complexity.Coach.Status(childComplexity), true + + case "CommandResponse.message": + if e.complexity.CommandResponse.Message == nil { + break + } + + return e.complexity.CommandResponse.Message(childComplexity), true + + case "Mutation.speedCommand": + if e.complexity.Mutation.SpeedCommand == nil { + break + } + + args, err := ec.field_Mutation_speedCommand_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Mutation.SpeedCommand(childComplexity, args["params"].(*model.SpeedCommand)), true + + case "Mutation.strengthCommand": + if e.complexity.Mutation.StrengthCommand == nil { + break + } + + args, err := ec.field_Mutation_strengthCommand_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Mutation.StrengthCommand(childComplexity, args["params"].(*model.StrengthCommand)), true + + case "Speed.Id": + if e.complexity.Speed.ID == nil { + break + } + + return e.complexity.Speed.ID(childComplexity), true + + case "Speed.last_speed": + if e.complexity.Speed.LastSpeed == nil { + break + } + + return e.complexity.Speed.LastSpeed(childComplexity), true + + case "Speed.max_speed": + if e.complexity.Speed.MaxSpeed == nil { + break + } + + return e.complexity.Speed.MaxSpeed(childComplexity), true + + case "Speed.position": + if e.complexity.Speed.Position == nil { + break + } + + return e.complexity.Speed.Position(childComplexity), true + + case "Speed.pull_ups": + if e.complexity.Speed.PullUps == nil { + break + } + + return e.complexity.Speed.PullUps(childComplexity), true + + case "Speed.speed": + if e.complexity.Speed.Speed == nil { + break + } + + return e.complexity.Speed.Speed(childComplexity), true + + case "Speed.speed_loss": + if e.complexity.Speed.SpeedLoss == nil { + break + } + + return e.complexity.Speed.SpeedLoss(childComplexity), true + + case "SpeedCommandBackend.command": + if e.complexity.SpeedCommandBackend.Command == nil { + break + } + + return e.complexity.SpeedCommandBackend.Command(childComplexity), true + + case "SpeedCommandBackend.value": + if e.complexity.SpeedCommandBackend.Value == nil { + break + } + + return e.complexity.SpeedCommandBackend.Value(childComplexity), true + + case "Strength.avg_strength": + if e.complexity.Strength.AvgStrength == nil { + break + } + + return e.complexity.Strength.AvgStrength(childComplexity), true + + case "Strength.duty_cycle": + if e.complexity.Strength.DutyCycle == nil { + break + } + + return e.complexity.Strength.DutyCycle(childComplexity), true + + case "Strength.fti": + if e.complexity.Strength.Fti == nil { + break + } + + return e.complexity.Strength.Fti(childComplexity), true + + case "Strength.interval": + if e.complexity.Strength.Interval == nil { + break + } + + return e.complexity.Strength.Interval(childComplexity), true + + case "Strength.max_strength": + if e.complexity.Strength.MaxStrength == nil { + break + } + + return e.complexity.Strength.MaxStrength(childComplexity), true + + case "Strength.rfd": + if e.complexity.Strength.Rfd == nil { + break + } + + return e.complexity.Strength.Rfd(childComplexity), true + + case "Strength.strength": + if e.complexity.Strength.Strength == nil { + break + } + + return e.complexity.Strength.Strength(childComplexity), true + + case "Strength.strength_loss": + if e.complexity.Strength.StrengthLoss == nil { + break + } + + return e.complexity.Strength.StrengthLoss(childComplexity), true + + case "Strength.time": + if e.complexity.Strength.Time == nil { + break + } + + return e.complexity.Strength.Time(childComplexity), true + + case "StrengthCommandBackend.command": + if e.complexity.StrengthCommandBackend.Command == nil { + break + } + + return e.complexity.StrengthCommandBackend.Command(childComplexity), true + + case "StrengthCommandBackend.value": + if e.complexity.StrengthCommandBackend.Value == nil { + break + } + + return e.complexity.StrengthCommandBackend.Value(childComplexity), true + + case "Subscription.coach": + if e.complexity.Subscription.Coach == nil { + break + } + + return e.complexity.Subscription.Coach(childComplexity), true + + case "Subscription.speed": + if e.complexity.Subscription.Speed == nil { + break + } + + return e.complexity.Subscription.Speed(childComplexity), true + + case "Subscription.speedBackendCommands": + if e.complexity.Subscription.SpeedBackendCommands == nil { + break + } + + return e.complexity.Subscription.SpeedBackendCommands(childComplexity), true + + case "Subscription.strength": + if e.complexity.Subscription.Strength == nil { + break + } + + return e.complexity.Subscription.Strength(childComplexity), true + + case "Subscription.strengthBackendCommands": + if e.complexity.Subscription.StrengthBackendCommands == nil { + break + } + + return e.complexity.Subscription.StrengthBackendCommands(childComplexity), true + + } + return 0, false +} + +func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler { + rc := graphql.GetOperationContext(ctx) + ec := executionContext{rc, e} + first := true + + switch rc.Operation.Operation { + case ast.Query: + return func(ctx context.Context) *graphql.Response { + if !first { + return nil + } + first = false + data := ec._Query(ctx, rc.Operation.SelectionSet) + var buf bytes.Buffer + data.MarshalGQL(&buf) + + return &graphql.Response{ + Data: buf.Bytes(), + } + } + case ast.Mutation: + return func(ctx context.Context) *graphql.Response { + if !first { + return nil + } + first = false + data := ec._Mutation(ctx, rc.Operation.SelectionSet) + var buf bytes.Buffer + data.MarshalGQL(&buf) + + return &graphql.Response{ + Data: buf.Bytes(), + } + } + case ast.Subscription: + next := ec._Subscription(ctx, rc.Operation.SelectionSet) + + var buf bytes.Buffer + return func(ctx context.Context) *graphql.Response { + buf.Reset() + data := next() + + if data == nil { + return nil + } + data.MarshalGQL(&buf) + + return &graphql.Response{ + Data: buf.Bytes(), + } + } + + default: + return graphql.OneShot(graphql.ErrorResponse(ctx, "unsupported GraphQL operation")) + } +} + +type executionContext struct { + *graphql.OperationContext + *executableSchema +} + +func (ec *executionContext) introspectSchema() (*introspection.Schema, error) { + if ec.DisableIntrospection { + return nil, errors.New("introspection disabled") + } + return introspection.WrapSchema(parsedSchema), nil +} + +func (ec *executionContext) introspectType(name string) (*introspection.Type, error) { + if ec.DisableIntrospection { + return nil, errors.New("introspection disabled") + } + return introspection.WrapTypeFromDef(parsedSchema, parsedSchema.Types[name]), nil +} + +var sources = []*ast.Source{ + &ast.Source{Name: "graph/schema.graphqls", Input: `""" +Speed has all the data related with measuring speed exercises +""" +type Speed{ + """ + Uniq identifier for each data pushed + """ + Id: Int! + """ + Absolute position (height) of the climber (meters) + """ + position: Float! + """ + Current speed of the climber (m/s) + """ + speed: Float! + """ + Number of pull ups done since the last reset + """ + pull_ups: Int + """ + Difference of speed between the fastest pull up and the latest one, in percentage (0-100) + """ + speed_loss: Float + """ + Speed of the last pull up (m/s) + """ + last_speed: Float + """ + Max speed since reset (m/s) + """ + max_speed: Float +} + +""" +Strength data +""" +type Strength{ + """ + Time since the exercise started (seconds) + """ + time: Float + """ + Current strength (Newtons) + """ + strength: Float + """ + Max strength since reset (Newtons) + """ + max_strength: Float + """ + Average strength since reset (Newtons) + """ + avg_strength: Float + """ + RFD: rate of force development since reset (N/s) + Should be normalized with the weight in the frontend + """ + rfd: Float + """ + FTI: force-time integral since reset () + Should be normalized with the weight? + """ + fti: Float + """ + Difference of strength between the max and the latest value, in percentage (0-100) + """ + strength_loss: Float + """ + Duty cycle + Percentage of exercise active vs rest + """ + duty_cycle: Float + """ + Time between measures (seconds) + """ + interval: Float +} + +""" +Notifications from the coach backend app to the user +""" +type Coach{ + """ + Text with the notification + """ + message: String + status: COACH_STATUS +} + +enum SPEED_COMMAND_TYPE{ + SIMULATE + PAUSE + RESTART + RESET + CALIBRATE +} + +enum STRENGTH_COMMAND_BACKEND_TYPE{ + END +} + +enum SPEED_COMMAND_BACKEND_TYPE{ + END +} + +enum STRENGTH_COMMAND_TYPE{ + SIMULATE + PAUSE + RESTART + TARE + CALIBRATE + SAMPLING +} + +""" +Commands send from the client to the backend to control the state +""" +input SpeedCommand{ + command: SPEED_COMMAND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +""" +Commands send from the client to the backend to control the state +""" +input StrengthCommand{ + command: STRENGTH_COMMAND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +type SpeedCommandBackend{ + command: SPEED_COMMAND_BACKEND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +""" +Commands send from the backend to the client to control the state +""" +type StrengthCommandBackend{ + command: STRENGTH_COMMAND_BACKEND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +""" +Response to commands +""" +type CommandResponse{ + message: String +} + +enum COACH_STATUS{ + READY + PAUSED +} + +type Subscription{ + speed: Speed + strength: Strength + coach: Coach + """ + Receive commands from the backend strengh realted + """ + strengthBackendCommands: StrengthCommandBackend + """ + Receive commands from the backend speed related + """ + speedBackendCommands: SpeedCommandBackend +} + +type Mutation{ + strengthCommand( + params: StrengthCommand + ): CommandResponse! + speedCommand( + params: SpeedCommand + ): CommandResponse! +} +schema{ + mutation: Mutation, + subscription: Subscription +} +`, BuiltIn: false}, +} +var parsedSchema = gqlparser.MustLoadSchema(sources...) + +// endregion ************************** generated!.gotpl ************************** + +// region ***************************** args.gotpl ***************************** + +func (ec *executionContext) field_Mutation_speedCommand_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *model.SpeedCommand + if tmp, ok := rawArgs["params"]; ok { + arg0, err = ec.unmarshalOSpeedCommand2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommand(ctx, tmp) + if err != nil { + return nil, err + } + } + args["params"] = arg0 + return args, nil +} + +func (ec *executionContext) field_Mutation_strengthCommand_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *model.StrengthCommand + if tmp, ok := rawArgs["params"]; ok { + arg0, err = ec.unmarshalOStrengthCommand2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommand(ctx, tmp) + if err != nil { + return nil, err + } + } + args["params"] = arg0 + return args, nil +} + +func (ec *executionContext) field_Query___type_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 string + if tmp, ok := rawArgs["name"]; ok { + arg0, err = ec.unmarshalNString2string(ctx, tmp) + if err != nil { + return nil, err + } + } + args["name"] = arg0 + return args, nil +} + +func (ec *executionContext) field___Type_enumValues_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 bool + if tmp, ok := rawArgs["includeDeprecated"]; ok { + arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp) + if err != nil { + return nil, err + } + } + args["includeDeprecated"] = arg0 + return args, nil +} + +func (ec *executionContext) field___Type_fields_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 bool + if tmp, ok := rawArgs["includeDeprecated"]; ok { + arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp) + if err != nil { + return nil, err + } + } + args["includeDeprecated"] = arg0 + return args, nil +} + +// endregion ***************************** args.gotpl ***************************** + +// region ************************** directives.gotpl ************************** + +// endregion ************************** directives.gotpl ************************** + +// region **************************** field.gotpl ***************************** + +func (ec *executionContext) _Coach_message(ctx context.Context, field graphql.CollectedField, obj *model.Coach) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Coach", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Message, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) _Coach_status(ctx context.Context, field graphql.CollectedField, obj *model.Coach) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Coach", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Status, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*model.CoachStatus) + fc.Result = res + return ec.marshalOCOACH_STATUS2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoachStatus(ctx, field.Selections, res) +} + +func (ec *executionContext) _CommandResponse_message(ctx context.Context, field graphql.CollectedField, obj *model.CommandResponse) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "CommandResponse", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Message, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) _Mutation_strengthCommand(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Mutation", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + rawArgs := field.ArgumentMap(ec.Variables) + args, err := ec.field_Mutation_strengthCommand_args(ctx, rawArgs) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + fc.Args = args + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Mutation().StrengthCommand(rctx, args["params"].(*model.StrengthCommand)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*model.CommandResponse) + fc.Result = res + return ec.marshalNCommandResponse2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCommandResponse(ctx, field.Selections, res) +} + +func (ec *executionContext) _Mutation_speedCommand(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Mutation", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + rawArgs := field.ArgumentMap(ec.Variables) + args, err := ec.field_Mutation_speedCommand_args(ctx, rawArgs) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + fc.Args = args + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Mutation().SpeedCommand(rctx, args["params"].(*model.SpeedCommand)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*model.CommandResponse) + fc.Result = res + return ec.marshalNCommandResponse2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCommandResponse(ctx, field.Selections, res) +} + +func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Query", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + rawArgs := field.ArgumentMap(ec.Variables) + args, err := ec.field_Query___type_args(ctx, rawArgs) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + fc.Args = args + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.introspectType(args["name"].(string)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Query", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.introspectSchema() + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Schema) + fc.Result = res + return ec.marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_Id(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.ID, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_position(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Position, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(float64) + fc.Result = res + return ec.marshalNFloat2float64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_speed(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Speed, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(float64) + fc.Result = res + return ec.marshalNFloat2float64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_pull_ups(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.PullUps, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*int) + fc.Result = res + return ec.marshalOInt2ᚖint(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_speed_loss(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.SpeedLoss, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_last_speed(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.LastSpeed, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Speed_max_speed(ctx context.Context, field graphql.CollectedField, obj *model.Speed) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Speed", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.MaxSpeed, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _SpeedCommandBackend_command(ctx context.Context, field graphql.CollectedField, obj *model.SpeedCommandBackend) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "SpeedCommandBackend", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Command, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*model.SpeedCommandBackendType) + fc.Result = res + return ec.marshalOSPEED_COMMAND_BACKEND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackendType(ctx, field.Selections, res) +} + +func (ec *executionContext) _SpeedCommandBackend_value(ctx context.Context, field graphql.CollectedField, obj *model.SpeedCommandBackend) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "SpeedCommandBackend", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Value, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_time(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Time, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_strength(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Strength, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_max_strength(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.MaxStrength, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_avg_strength(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.AvgStrength, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_rfd(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Rfd, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_fti(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Fti, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_strength_loss(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.StrengthLoss, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_duty_cycle(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.DutyCycle, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Strength_interval(ctx context.Context, field graphql.CollectedField, obj *model.Strength) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "Strength", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Interval, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _StrengthCommandBackend_command(ctx context.Context, field graphql.CollectedField, obj *model.StrengthCommandBackend) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "StrengthCommandBackend", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Command, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*model.StrengthCommandBackendType) + fc.Result = res + return ec.marshalOSTRENGTH_COMMAND_BACKEND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackendType(ctx, field.Selections, res) +} + +func (ec *executionContext) _StrengthCommandBackend_value(ctx context.Context, field graphql.CollectedField, obj *model.StrengthCommandBackend) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "StrengthCommandBackend", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Value, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) _Subscription_speed(ctx context.Context, field graphql.CollectedField) (ret func() graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + fc := &graphql.FieldContext{ + Object: "Subscription", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Subscription().Speed(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return nil + } + if resTmp == nil { + return nil + } + return func() graphql.Marshaler { + res, ok := <-resTmp.(<-chan *model.Speed) + if !ok { + return nil + } + return graphql.WriterFunc(func(w io.Writer) { + w.Write([]byte{'{'}) + graphql.MarshalString(field.Alias).MarshalGQL(w) + w.Write([]byte{':'}) + ec.marshalOSpeed2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeed(ctx, field.Selections, res).MarshalGQL(w) + w.Write([]byte{'}'}) + }) + } +} + +func (ec *executionContext) _Subscription_strength(ctx context.Context, field graphql.CollectedField) (ret func() graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + fc := &graphql.FieldContext{ + Object: "Subscription", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Subscription().Strength(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return nil + } + if resTmp == nil { + return nil + } + return func() graphql.Marshaler { + res, ok := <-resTmp.(<-chan *model.Strength) + if !ok { + return nil + } + return graphql.WriterFunc(func(w io.Writer) { + w.Write([]byte{'{'}) + graphql.MarshalString(field.Alias).MarshalGQL(w) + w.Write([]byte{':'}) + ec.marshalOStrength2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrength(ctx, field.Selections, res).MarshalGQL(w) + w.Write([]byte{'}'}) + }) + } +} + +func (ec *executionContext) _Subscription_coach(ctx context.Context, field graphql.CollectedField) (ret func() graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + fc := &graphql.FieldContext{ + Object: "Subscription", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Subscription().Coach(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return nil + } + if resTmp == nil { + return nil + } + return func() graphql.Marshaler { + res, ok := <-resTmp.(<-chan *model.Coach) + if !ok { + return nil + } + return graphql.WriterFunc(func(w io.Writer) { + w.Write([]byte{'{'}) + graphql.MarshalString(field.Alias).MarshalGQL(w) + w.Write([]byte{':'}) + ec.marshalOCoach2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoach(ctx, field.Selections, res).MarshalGQL(w) + w.Write([]byte{'}'}) + }) + } +} + +func (ec *executionContext) _Subscription_strengthBackendCommands(ctx context.Context, field graphql.CollectedField) (ret func() graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + fc := &graphql.FieldContext{ + Object: "Subscription", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Subscription().StrengthBackendCommands(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return nil + } + if resTmp == nil { + return nil + } + return func() graphql.Marshaler { + res, ok := <-resTmp.(<-chan *model.StrengthCommandBackend) + if !ok { + return nil + } + return graphql.WriterFunc(func(w io.Writer) { + w.Write([]byte{'{'}) + graphql.MarshalString(field.Alias).MarshalGQL(w) + w.Write([]byte{':'}) + ec.marshalOStrengthCommandBackend2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackend(ctx, field.Selections, res).MarshalGQL(w) + w.Write([]byte{'}'}) + }) + } +} + +func (ec *executionContext) _Subscription_speedBackendCommands(ctx context.Context, field graphql.CollectedField) (ret func() graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + fc := &graphql.FieldContext{ + Object: "Subscription", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Subscription().SpeedBackendCommands(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return nil + } + if resTmp == nil { + return nil + } + return func() graphql.Marshaler { + res, ok := <-resTmp.(<-chan *model.SpeedCommandBackend) + if !ok { + return nil + } + return graphql.WriterFunc(func(w io.Writer) { + w.Write([]byte{'{'}) + graphql.MarshalString(field.Alias).MarshalGQL(w) + w.Write([]byte{':'}) + ec.marshalOSpeedCommandBackend2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackend(ctx, field.Selections, res).MarshalGQL(w) + w.Write([]byte{'}'}) + }) + } +} + +func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Directive", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Directive", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Directive", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Locations, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]string) + fc.Result = res + return ec.marshalN__DirectiveLocation2ᚕstringᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Directive", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Args, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.InputValue) + fc.Result = res + return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsDeprecated(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.DeprecationReason(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Field", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Field", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Field", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Args, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.InputValue) + fc.Result = res + return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Field", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Type, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Field", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsDeprecated(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Field", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.DeprecationReason(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Type, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + Args: nil, + IsMethod: false, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.DefaultValue, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Schema", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Types(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Schema", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.QueryType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Schema", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.MutationType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Schema", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.SubscriptionType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Schema", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Directives(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.Directive) + fc.Result = res + return ec.marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Kind(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalN__TypeKind2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + rawArgs := field.ArgumentMap(ec.Variables) + args, err := ec.field___Type_fields_args(ctx, rawArgs) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + fc.Args = args + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Fields(args["includeDeprecated"].(bool)), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.Field) + fc.Result = res + return ec.marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐFieldᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Interfaces(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.PossibleTypes(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + rawArgs := field.ArgumentMap(ec.Variables) + args, err := ec.field___Type_enumValues_args(ctx, rawArgs) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + fc.Args = args + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.EnumValues(args["includeDeprecated"].(bool)), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.EnumValue) + fc.Result = res + return ec.marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.InputFields(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.InputValue) + fc.Result = res + return ec.marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + fc := &graphql.FieldContext{ + Object: "__Type", + Field: field, + Args: nil, + IsMethod: true, + } + + ctx = graphql.WithFieldContext(ctx, fc) + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.OfType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +// endregion **************************** field.gotpl ***************************** + +// region **************************** input.gotpl ***************************** + +func (ec *executionContext) unmarshalInputSpeedCommand(ctx context.Context, obj interface{}) (model.SpeedCommand, error) { + var it model.SpeedCommand + var asMap = obj.(map[string]interface{}) + + for k, v := range asMap { + switch k { + case "command": + var err error + it.Command, err = ec.unmarshalOSPEED_COMMAND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandType(ctx, v) + if err != nil { + return it, err + } + case "value": + var err error + it.Value, err = ec.unmarshalOFloat2ᚖfloat64(ctx, v) + if err != nil { + return it, err + } + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputStrengthCommand(ctx context.Context, obj interface{}) (model.StrengthCommand, error) { + var it model.StrengthCommand + var asMap = obj.(map[string]interface{}) + + for k, v := range asMap { + switch k { + case "command": + var err error + it.Command, err = ec.unmarshalOSTRENGTH_COMMAND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandType(ctx, v) + if err != nil { + return it, err + } + case "value": + var err error + it.Value, err = ec.unmarshalOFloat2ᚖfloat64(ctx, v) + if err != nil { + return it, err + } + } + } + + return it, nil +} + +// endregion **************************** input.gotpl ***************************** + +// region ************************** interface.gotpl *************************** + +// endregion ************************** interface.gotpl *************************** + +// region **************************** object.gotpl **************************** + +var coachImplementors = []string{"Coach"} + +func (ec *executionContext) _Coach(ctx context.Context, sel ast.SelectionSet, obj *model.Coach) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, coachImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Coach") + case "message": + out.Values[i] = ec._Coach_message(ctx, field, obj) + case "status": + out.Values[i] = ec._Coach_status(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var commandResponseImplementors = []string{"CommandResponse"} + +func (ec *executionContext) _CommandResponse(ctx context.Context, sel ast.SelectionSet, obj *model.CommandResponse) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, commandResponseImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("CommandResponse") + case "message": + out.Values[i] = ec._CommandResponse_message(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var mutationImplementors = []string{"Mutation"} + +func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, mutationImplementors) + + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ + Object: "Mutation", + }) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Mutation") + case "strengthCommand": + out.Values[i] = ec._Mutation_strengthCommand(ctx, field) + if out.Values[i] == graphql.Null { + invalids++ + } + case "speedCommand": + out.Values[i] = ec._Mutation_speedCommand(ctx, field) + if out.Values[i] == graphql.Null { + invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var queryImplementors = []string{"Query"} + +func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queryImplementors) + + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ + Object: "Query", + }) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Query") + case "__type": + out.Values[i] = ec._Query___type(ctx, field) + case "__schema": + out.Values[i] = ec._Query___schema(ctx, field) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var speedImplementors = []string{"Speed"} + +func (ec *executionContext) _Speed(ctx context.Context, sel ast.SelectionSet, obj *model.Speed) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, speedImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Speed") + case "Id": + out.Values[i] = ec._Speed_Id(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "position": + out.Values[i] = ec._Speed_position(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "speed": + out.Values[i] = ec._Speed_speed(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "pull_ups": + out.Values[i] = ec._Speed_pull_ups(ctx, field, obj) + case "speed_loss": + out.Values[i] = ec._Speed_speed_loss(ctx, field, obj) + case "last_speed": + out.Values[i] = ec._Speed_last_speed(ctx, field, obj) + case "max_speed": + out.Values[i] = ec._Speed_max_speed(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var speedCommandBackendImplementors = []string{"SpeedCommandBackend"} + +func (ec *executionContext) _SpeedCommandBackend(ctx context.Context, sel ast.SelectionSet, obj *model.SpeedCommandBackend) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, speedCommandBackendImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("SpeedCommandBackend") + case "command": + out.Values[i] = ec._SpeedCommandBackend_command(ctx, field, obj) + case "value": + out.Values[i] = ec._SpeedCommandBackend_value(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var strengthImplementors = []string{"Strength"} + +func (ec *executionContext) _Strength(ctx context.Context, sel ast.SelectionSet, obj *model.Strength) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, strengthImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Strength") + case "time": + out.Values[i] = ec._Strength_time(ctx, field, obj) + case "strength": + out.Values[i] = ec._Strength_strength(ctx, field, obj) + case "max_strength": + out.Values[i] = ec._Strength_max_strength(ctx, field, obj) + case "avg_strength": + out.Values[i] = ec._Strength_avg_strength(ctx, field, obj) + case "rfd": + out.Values[i] = ec._Strength_rfd(ctx, field, obj) + case "fti": + out.Values[i] = ec._Strength_fti(ctx, field, obj) + case "strength_loss": + out.Values[i] = ec._Strength_strength_loss(ctx, field, obj) + case "duty_cycle": + out.Values[i] = ec._Strength_duty_cycle(ctx, field, obj) + case "interval": + out.Values[i] = ec._Strength_interval(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var strengthCommandBackendImplementors = []string{"StrengthCommandBackend"} + +func (ec *executionContext) _StrengthCommandBackend(ctx context.Context, sel ast.SelectionSet, obj *model.StrengthCommandBackend) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, strengthCommandBackendImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("StrengthCommandBackend") + case "command": + out.Values[i] = ec._StrengthCommandBackend_command(ctx, field, obj) + case "value": + out.Values[i] = ec._StrengthCommandBackend_value(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var subscriptionImplementors = []string{"Subscription"} + +func (ec *executionContext) _Subscription(ctx context.Context, sel ast.SelectionSet) func() graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, subscriptionImplementors) + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ + Object: "Subscription", + }) + if len(fields) != 1 { + ec.Errorf(ctx, "must subscribe to exactly one stream") + return nil + } + + switch fields[0].Name { + case "speed": + return ec._Subscription_speed(ctx, fields[0]) + case "strength": + return ec._Subscription_strength(ctx, fields[0]) + case "coach": + return ec._Subscription_coach(ctx, fields[0]) + case "strengthBackendCommands": + return ec._Subscription_strengthBackendCommands(ctx, fields[0]) + case "speedBackendCommands": + return ec._Subscription_speedBackendCommands(ctx, fields[0]) + default: + panic("unknown field " + strconv.Quote(fields[0].Name)) + } +} + +var __DirectiveImplementors = []string{"__Directive"} + +func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, __DirectiveImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("__Directive") + case "name": + out.Values[i] = ec.___Directive_name(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "description": + out.Values[i] = ec.___Directive_description(ctx, field, obj) + case "locations": + out.Values[i] = ec.___Directive_locations(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "args": + out.Values[i] = ec.___Directive_args(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var __EnumValueImplementors = []string{"__EnumValue"} + +func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, __EnumValueImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("__EnumValue") + case "name": + out.Values[i] = ec.___EnumValue_name(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "description": + out.Values[i] = ec.___EnumValue_description(ctx, field, obj) + case "isDeprecated": + out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "deprecationReason": + out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var __FieldImplementors = []string{"__Field"} + +func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, __FieldImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("__Field") + case "name": + out.Values[i] = ec.___Field_name(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "description": + out.Values[i] = ec.___Field_description(ctx, field, obj) + case "args": + out.Values[i] = ec.___Field_args(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "type": + out.Values[i] = ec.___Field_type(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "isDeprecated": + out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "deprecationReason": + out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var __InputValueImplementors = []string{"__InputValue"} + +func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, __InputValueImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("__InputValue") + case "name": + out.Values[i] = ec.___InputValue_name(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "description": + out.Values[i] = ec.___InputValue_description(ctx, field, obj) + case "type": + out.Values[i] = ec.___InputValue_type(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "defaultValue": + out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var __SchemaImplementors = []string{"__Schema"} + +func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, __SchemaImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("__Schema") + case "types": + out.Values[i] = ec.___Schema_types(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "queryType": + out.Values[i] = ec.___Schema_queryType(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "mutationType": + out.Values[i] = ec.___Schema_mutationType(ctx, field, obj) + case "subscriptionType": + out.Values[i] = ec.___Schema_subscriptionType(ctx, field, obj) + case "directives": + out.Values[i] = ec.___Schema_directives(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +var __TypeImplementors = []string{"__Type"} + +func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, __TypeImplementors) + + out := graphql.NewFieldSet(fields) + var invalids uint32 + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("__Type") + case "kind": + out.Values[i] = ec.___Type_kind(ctx, field, obj) + if out.Values[i] == graphql.Null { + invalids++ + } + case "name": + out.Values[i] = ec.___Type_name(ctx, field, obj) + case "description": + out.Values[i] = ec.___Type_description(ctx, field, obj) + case "fields": + out.Values[i] = ec.___Type_fields(ctx, field, obj) + case "interfaces": + out.Values[i] = ec.___Type_interfaces(ctx, field, obj) + case "possibleTypes": + out.Values[i] = ec.___Type_possibleTypes(ctx, field, obj) + case "enumValues": + out.Values[i] = ec.___Type_enumValues(ctx, field, obj) + case "inputFields": + out.Values[i] = ec.___Type_inputFields(ctx, field, obj) + case "ofType": + out.Values[i] = ec.___Type_ofType(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch() + if invalids > 0 { + return graphql.Null + } + return out +} + +// endregion **************************** object.gotpl **************************** + +// region ***************************** type.gotpl ***************************** + +func (ec *executionContext) unmarshalNBoolean2bool(ctx context.Context, v interface{}) (bool, error) { + return graphql.UnmarshalBoolean(v) +} + +func (ec *executionContext) marshalNBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { + res := graphql.MarshalBoolean(v) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res +} + +func (ec *executionContext) marshalNCommandResponse2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCommandResponse(ctx context.Context, sel ast.SelectionSet, v model.CommandResponse) graphql.Marshaler { + return ec._CommandResponse(ctx, sel, &v) +} + +func (ec *executionContext) marshalNCommandResponse2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCommandResponse(ctx context.Context, sel ast.SelectionSet, v *model.CommandResponse) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec._CommandResponse(ctx, sel, v) +} + +func (ec *executionContext) unmarshalNFloat2float64(ctx context.Context, v interface{}) (float64, error) { + return graphql.UnmarshalFloat(v) +} + +func (ec *executionContext) marshalNFloat2float64(ctx context.Context, sel ast.SelectionSet, v float64) graphql.Marshaler { + res := graphql.MarshalFloat(v) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res +} + +func (ec *executionContext) unmarshalNInt2int(ctx context.Context, v interface{}) (int, error) { + return graphql.UnmarshalInt(v) +} + +func (ec *executionContext) marshalNInt2int(ctx context.Context, sel ast.SelectionSet, v int) graphql.Marshaler { + res := graphql.MarshalInt(v) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res +} + +func (ec *executionContext) unmarshalNString2string(ctx context.Context, v interface{}) (string, error) { + return graphql.UnmarshalString(v) +} + +func (ec *executionContext) marshalNString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { + res := graphql.MarshalString(v) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res +} + +func (ec *executionContext) marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx context.Context, sel ast.SelectionSet, v introspection.Directive) graphql.Marshaler { + return ec.___Directive(ctx, sel, &v) +} + +func (ec *executionContext) marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Directive) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) unmarshalN__DirectiveLocation2string(ctx context.Context, v interface{}) (string, error) { + return graphql.UnmarshalString(v) +} + +func (ec *executionContext) marshalN__DirectiveLocation2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { + res := graphql.MarshalString(v) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res +} + +func (ec *executionContext) unmarshalN__DirectiveLocation2ᚕstringᚄ(ctx context.Context, v interface{}) ([]string, error) { + var vSlice []interface{} + if v != nil { + if tmp1, ok := v.([]interface{}); ok { + vSlice = tmp1 + } else { + vSlice = []interface{}{v} + } + } + var err error + res := make([]string, len(vSlice)) + for i := range vSlice { + res[i], err = ec.unmarshalN__DirectiveLocation2string(ctx, vSlice[i]) + if err != nil { + return nil, err + } + } + return res, nil +} + +func (ec *executionContext) marshalN__DirectiveLocation2ᚕstringᚄ(ctx context.Context, sel ast.SelectionSet, v []string) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__DirectiveLocation2string(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalN__EnumValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx context.Context, sel ast.SelectionSet, v introspection.EnumValue) graphql.Marshaler { + return ec.___EnumValue(ctx, sel, &v) +} + +func (ec *executionContext) marshalN__Field2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx context.Context, sel ast.SelectionSet, v introspection.Field) graphql.Marshaler { + return ec.___Field(ctx, sel, &v) +} + +func (ec *executionContext) marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx context.Context, sel ast.SelectionSet, v introspection.InputValue) graphql.Marshaler { + return ec.___InputValue(ctx, sel, &v) +} + +func (ec *executionContext) marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.InputValue) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v introspection.Type) graphql.Marshaler { + return ec.___Type(ctx, sel, &v) +} + +func (ec *executionContext) marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Type) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v *introspection.Type) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + return ec.___Type(ctx, sel, v) +} + +func (ec *executionContext) unmarshalN__TypeKind2string(ctx context.Context, v interface{}) (string, error) { + return graphql.UnmarshalString(v) +} + +func (ec *executionContext) marshalN__TypeKind2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { + res := graphql.MarshalString(v) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "must not be null") + } + } + return res +} + +func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interface{}) (bool, error) { + return graphql.UnmarshalBoolean(v) +} + +func (ec *executionContext) marshalOBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { + return graphql.MarshalBoolean(v) +} + +func (ec *executionContext) unmarshalOBoolean2ᚖbool(ctx context.Context, v interface{}) (*bool, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOBoolean2bool(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOBoolean2ᚖbool(ctx context.Context, sel ast.SelectionSet, v *bool) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec.marshalOBoolean2bool(ctx, sel, *v) +} + +func (ec *executionContext) unmarshalOCOACH_STATUS2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoachStatus(ctx context.Context, v interface{}) (model.CoachStatus, error) { + var res model.CoachStatus + return res, res.UnmarshalGQL(v) +} + +func (ec *executionContext) marshalOCOACH_STATUS2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoachStatus(ctx context.Context, sel ast.SelectionSet, v model.CoachStatus) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalOCOACH_STATUS2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoachStatus(ctx context.Context, v interface{}) (*model.CoachStatus, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOCOACH_STATUS2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoachStatus(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOCOACH_STATUS2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoachStatus(ctx context.Context, sel ast.SelectionSet, v *model.CoachStatus) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return v +} + +func (ec *executionContext) marshalOCoach2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoach(ctx context.Context, sel ast.SelectionSet, v model.Coach) graphql.Marshaler { + return ec._Coach(ctx, sel, &v) +} + +func (ec *executionContext) marshalOCoach2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐCoach(ctx context.Context, sel ast.SelectionSet, v *model.Coach) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._Coach(ctx, sel, v) +} + +func (ec *executionContext) unmarshalOFloat2float64(ctx context.Context, v interface{}) (float64, error) { + return graphql.UnmarshalFloat(v) +} + +func (ec *executionContext) marshalOFloat2float64(ctx context.Context, sel ast.SelectionSet, v float64) graphql.Marshaler { + return graphql.MarshalFloat(v) +} + +func (ec *executionContext) unmarshalOFloat2ᚖfloat64(ctx context.Context, v interface{}) (*float64, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOFloat2float64(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOFloat2ᚖfloat64(ctx context.Context, sel ast.SelectionSet, v *float64) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec.marshalOFloat2float64(ctx, sel, *v) +} + +func (ec *executionContext) unmarshalOInt2int(ctx context.Context, v interface{}) (int, error) { + return graphql.UnmarshalInt(v) +} + +func (ec *executionContext) marshalOInt2int(ctx context.Context, sel ast.SelectionSet, v int) graphql.Marshaler { + return graphql.MarshalInt(v) +} + +func (ec *executionContext) unmarshalOInt2ᚖint(ctx context.Context, v interface{}) (*int, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOInt2int(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOInt2ᚖint(ctx context.Context, sel ast.SelectionSet, v *int) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec.marshalOInt2int(ctx, sel, *v) +} + +func (ec *executionContext) unmarshalOSPEED_COMMAND_BACKEND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackendType(ctx context.Context, v interface{}) (model.SpeedCommandBackendType, error) { + var res model.SpeedCommandBackendType + return res, res.UnmarshalGQL(v) +} + +func (ec *executionContext) marshalOSPEED_COMMAND_BACKEND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackendType(ctx context.Context, sel ast.SelectionSet, v model.SpeedCommandBackendType) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalOSPEED_COMMAND_BACKEND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackendType(ctx context.Context, v interface{}) (*model.SpeedCommandBackendType, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOSPEED_COMMAND_BACKEND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackendType(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOSPEED_COMMAND_BACKEND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackendType(ctx context.Context, sel ast.SelectionSet, v *model.SpeedCommandBackendType) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return v +} + +func (ec *executionContext) unmarshalOSPEED_COMMAND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandType(ctx context.Context, v interface{}) (model.SpeedCommandType, error) { + var res model.SpeedCommandType + return res, res.UnmarshalGQL(v) +} + +func (ec *executionContext) marshalOSPEED_COMMAND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandType(ctx context.Context, sel ast.SelectionSet, v model.SpeedCommandType) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalOSPEED_COMMAND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandType(ctx context.Context, v interface{}) (*model.SpeedCommandType, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOSPEED_COMMAND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandType(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOSPEED_COMMAND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandType(ctx context.Context, sel ast.SelectionSet, v *model.SpeedCommandType) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return v +} + +func (ec *executionContext) unmarshalOSTRENGTH_COMMAND_BACKEND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackendType(ctx context.Context, v interface{}) (model.StrengthCommandBackendType, error) { + var res model.StrengthCommandBackendType + return res, res.UnmarshalGQL(v) +} + +func (ec *executionContext) marshalOSTRENGTH_COMMAND_BACKEND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackendType(ctx context.Context, sel ast.SelectionSet, v model.StrengthCommandBackendType) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalOSTRENGTH_COMMAND_BACKEND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackendType(ctx context.Context, v interface{}) (*model.StrengthCommandBackendType, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOSTRENGTH_COMMAND_BACKEND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackendType(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOSTRENGTH_COMMAND_BACKEND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackendType(ctx context.Context, sel ast.SelectionSet, v *model.StrengthCommandBackendType) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return v +} + +func (ec *executionContext) unmarshalOSTRENGTH_COMMAND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandType(ctx context.Context, v interface{}) (model.StrengthCommandType, error) { + var res model.StrengthCommandType + return res, res.UnmarshalGQL(v) +} + +func (ec *executionContext) marshalOSTRENGTH_COMMAND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandType(ctx context.Context, sel ast.SelectionSet, v model.StrengthCommandType) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalOSTRENGTH_COMMAND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandType(ctx context.Context, v interface{}) (*model.StrengthCommandType, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOSTRENGTH_COMMAND_TYPE2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandType(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOSTRENGTH_COMMAND_TYPE2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandType(ctx context.Context, sel ast.SelectionSet, v *model.StrengthCommandType) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return v +} + +func (ec *executionContext) marshalOSpeed2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeed(ctx context.Context, sel ast.SelectionSet, v model.Speed) graphql.Marshaler { + return ec._Speed(ctx, sel, &v) +} + +func (ec *executionContext) marshalOSpeed2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeed(ctx context.Context, sel ast.SelectionSet, v *model.Speed) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._Speed(ctx, sel, v) +} + +func (ec *executionContext) unmarshalOSpeedCommand2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommand(ctx context.Context, v interface{}) (model.SpeedCommand, error) { + return ec.unmarshalInputSpeedCommand(ctx, v) +} + +func (ec *executionContext) unmarshalOSpeedCommand2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommand(ctx context.Context, v interface{}) (*model.SpeedCommand, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOSpeedCommand2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommand(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOSpeedCommandBackend2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackend(ctx context.Context, sel ast.SelectionSet, v model.SpeedCommandBackend) graphql.Marshaler { + return ec._SpeedCommandBackend(ctx, sel, &v) +} + +func (ec *executionContext) marshalOSpeedCommandBackend2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐSpeedCommandBackend(ctx context.Context, sel ast.SelectionSet, v *model.SpeedCommandBackend) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._SpeedCommandBackend(ctx, sel, v) +} + +func (ec *executionContext) marshalOStrength2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrength(ctx context.Context, sel ast.SelectionSet, v model.Strength) graphql.Marshaler { + return ec._Strength(ctx, sel, &v) +} + +func (ec *executionContext) marshalOStrength2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrength(ctx context.Context, sel ast.SelectionSet, v *model.Strength) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._Strength(ctx, sel, v) +} + +func (ec *executionContext) unmarshalOStrengthCommand2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommand(ctx context.Context, v interface{}) (model.StrengthCommand, error) { + return ec.unmarshalInputStrengthCommand(ctx, v) +} + +func (ec *executionContext) unmarshalOStrengthCommand2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommand(ctx context.Context, v interface{}) (*model.StrengthCommand, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOStrengthCommand2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommand(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOStrengthCommandBackend2githubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackend(ctx context.Context, sel ast.SelectionSet, v model.StrengthCommandBackend) graphql.Marshaler { + return ec._StrengthCommandBackend(ctx, sel, &v) +} + +func (ec *executionContext) marshalOStrengthCommandBackend2ᚖgithubᚗcomᚋadrianlztᚋentrenamientoEscaladaᚋgraphᚋmodelᚐStrengthCommandBackend(ctx context.Context, sel ast.SelectionSet, v *model.StrengthCommandBackend) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._StrengthCommandBackend(ctx, sel, v) +} + +func (ec *executionContext) unmarshalOString2string(ctx context.Context, v interface{}) (string, error) { + return graphql.UnmarshalString(v) +} + +func (ec *executionContext) marshalOString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { + return graphql.MarshalString(v) +} + +func (ec *executionContext) unmarshalOString2ᚖstring(ctx context.Context, v interface{}) (*string, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalOString2string(ctx, v) + return &res, err +} + +func (ec *executionContext) marshalOString2ᚖstring(ctx context.Context, sel ast.SelectionSet, v *string) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec.marshalOString2string(ctx, sel, *v) +} + +func (ec *executionContext) marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.EnumValue) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__EnumValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValue(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐFieldᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Field) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__Field2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐField(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.InputValue) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__InputValue2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValue(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalO__Schema2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx context.Context, sel ast.SelectionSet, v introspection.Schema) graphql.Marshaler { + return ec.___Schema(ctx, sel, &v) +} + +func (ec *executionContext) marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx context.Context, sel ast.SelectionSet, v *introspection.Schema) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec.___Schema(ctx, sel, v) +} + +func (ec *executionContext) marshalO__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v introspection.Type) graphql.Marshaler { + return ec.___Type(ctx, sel, &v) +} + +func (ec *executionContext) marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx context.Context, sel ast.SelectionSet, v []introspection.Type) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalN__Type2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + return ret +} + +func (ec *executionContext) marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx context.Context, sel ast.SelectionSet, v *introspection.Type) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec.___Type(ctx, sel, v) +} + +// endregion ***************************** type.gotpl ***************************** diff --git a/app/graph/model/models_gen.go b/app/graph/model/models_gen.go new file mode 100644 index 0000000..3471cb3 --- /dev/null +++ b/app/graph/model/models_gen.go @@ -0,0 +1,306 @@ +// Code generated by github.com/99designs/gqlgen, DO NOT EDIT. + +package model + +import ( + "fmt" + "io" + "strconv" +) + +// Notifications from the coach backend app to the user +type Coach struct { + // Text with the notification + Message *string `json:"message"` + Status *CoachStatus `json:"status"` +} + +// Response to commands +type CommandResponse struct { + Message *string `json:"message"` +} + +// Speed has all the data related with measuring speed exercises +type Speed struct { + // Uniq identifier for each data pushed + ID int `json:"Id"` + // Absolute position (height) of the climber (meters) + Position float64 `json:"position"` + // Current speed of the climber (m/s) + Speed float64 `json:"speed"` + // Number of pull ups done since the last reset + PullUps *int `json:"pull_ups"` + // Difference of speed between the fastest pull up and the latest one, in percentage (0-100) + SpeedLoss *float64 `json:"speed_loss"` + // Speed of the last pull up (m/s) + LastSpeed *float64 `json:"last_speed"` + // Max speed since reset (m/s) + MaxSpeed *float64 `json:"max_speed"` +} + +// Commands send from the client to the backend to control the state +type SpeedCommand struct { + Command *SpeedCommandType `json:"command"` + // Value associated with some commands + Value *float64 `json:"value"` +} + +type SpeedCommandBackend struct { + Command *SpeedCommandBackendType `json:"command"` + // Value associated with some commands + Value *float64 `json:"value"` +} + +// Strength data +type Strength struct { + // Time since the exercise started (seconds) + Time *float64 `json:"time"` + // Current strength (Newtons) + Strength *float64 `json:"strength"` + // Max strength since reset (Newtons) + MaxStrength *float64 `json:"max_strength"` + // Average strength since reset (Newtons) + AvgStrength *float64 `json:"avg_strength"` + // RFD: rate of force development since reset (N/s) + // Should be normalized with the weight in the frontend + Rfd *float64 `json:"rfd"` + // FTI: force-time integral since reset () + // Should be normalized with the weight? + Fti *float64 `json:"fti"` + // Difference of strength between the max and the latest value, in percentage (0-100) + StrengthLoss *float64 `json:"strength_loss"` + // Duty cycle + // Percentage of exercise active vs rest + DutyCycle *float64 `json:"duty_cycle"` + // Time between measures (seconds) + Interval *float64 `json:"interval"` +} + +// Commands send from the client to the backend to control the state +type StrengthCommand struct { + Command *StrengthCommandType `json:"command"` + // Value associated with some commands + Value *float64 `json:"value"` +} + +// Commands send from the backend to the client to control the state +type StrengthCommandBackend struct { + Command *StrengthCommandBackendType `json:"command"` + // Value associated with some commands + Value *float64 `json:"value"` +} + +type CoachStatus string + +const ( + CoachStatusReady CoachStatus = "READY" + CoachStatusPaused CoachStatus = "PAUSED" +) + +var AllCoachStatus = []CoachStatus{ + CoachStatusReady, + CoachStatusPaused, +} + +func (e CoachStatus) IsValid() bool { + switch e { + case CoachStatusReady, CoachStatusPaused: + return true + } + return false +} + +func (e CoachStatus) String() string { + return string(e) +} + +func (e *CoachStatus) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = CoachStatus(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid COACH_STATUS", str) + } + return nil +} + +func (e CoachStatus) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type SpeedCommandBackendType string + +const ( + SpeedCommandBackendTypeEnd SpeedCommandBackendType = "END" +) + +var AllSpeedCommandBackendType = []SpeedCommandBackendType{ + SpeedCommandBackendTypeEnd, +} + +func (e SpeedCommandBackendType) IsValid() bool { + switch e { + case SpeedCommandBackendTypeEnd: + return true + } + return false +} + +func (e SpeedCommandBackendType) String() string { + return string(e) +} + +func (e *SpeedCommandBackendType) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = SpeedCommandBackendType(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid SPEED_COMMAND_BACKEND_TYPE", str) + } + return nil +} + +func (e SpeedCommandBackendType) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type SpeedCommandType string + +const ( + SpeedCommandTypeSimulate SpeedCommandType = "SIMULATE" + SpeedCommandTypePause SpeedCommandType = "PAUSE" + SpeedCommandTypeRestart SpeedCommandType = "RESTART" + SpeedCommandTypeReset SpeedCommandType = "RESET" + SpeedCommandTypeCalibrate SpeedCommandType = "CALIBRATE" +) + +var AllSpeedCommandType = []SpeedCommandType{ + SpeedCommandTypeSimulate, + SpeedCommandTypePause, + SpeedCommandTypeRestart, + SpeedCommandTypeReset, + SpeedCommandTypeCalibrate, +} + +func (e SpeedCommandType) IsValid() bool { + switch e { + case SpeedCommandTypeSimulate, SpeedCommandTypePause, SpeedCommandTypeRestart, SpeedCommandTypeReset, SpeedCommandTypeCalibrate: + return true + } + return false +} + +func (e SpeedCommandType) String() string { + return string(e) +} + +func (e *SpeedCommandType) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = SpeedCommandType(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid SPEED_COMMAND_TYPE", str) + } + return nil +} + +func (e SpeedCommandType) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type StrengthCommandBackendType string + +const ( + StrengthCommandBackendTypeEnd StrengthCommandBackendType = "END" +) + +var AllStrengthCommandBackendType = []StrengthCommandBackendType{ + StrengthCommandBackendTypeEnd, +} + +func (e StrengthCommandBackendType) IsValid() bool { + switch e { + case StrengthCommandBackendTypeEnd: + return true + } + return false +} + +func (e StrengthCommandBackendType) String() string { + return string(e) +} + +func (e *StrengthCommandBackendType) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = StrengthCommandBackendType(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid STRENGTH_COMMAND_BACKEND_TYPE", str) + } + return nil +} + +func (e StrengthCommandBackendType) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type StrengthCommandType string + +const ( + StrengthCommandTypeSimulate StrengthCommandType = "SIMULATE" + StrengthCommandTypePause StrengthCommandType = "PAUSE" + StrengthCommandTypeRestart StrengthCommandType = "RESTART" + StrengthCommandTypeTare StrengthCommandType = "TARE" + StrengthCommandTypeCalibrate StrengthCommandType = "CALIBRATE" + StrengthCommandTypeSampling StrengthCommandType = "SAMPLING" +) + +var AllStrengthCommandType = []StrengthCommandType{ + StrengthCommandTypeSimulate, + StrengthCommandTypePause, + StrengthCommandTypeRestart, + StrengthCommandTypeTare, + StrengthCommandTypeCalibrate, + StrengthCommandTypeSampling, +} + +func (e StrengthCommandType) IsValid() bool { + switch e { + case StrengthCommandTypeSimulate, StrengthCommandTypePause, StrengthCommandTypeRestart, StrengthCommandTypeTare, StrengthCommandTypeCalibrate, StrengthCommandTypeSampling: + return true + } + return false +} + +func (e StrengthCommandType) String() string { + return string(e) +} + +func (e *StrengthCommandType) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = StrengthCommandType(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid STRENGTH_COMMAND_TYPE", str) + } + return nil +} + +func (e StrengthCommandType) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} diff --git a/app/graph/resolver.go b/app/graph/resolver.go new file mode 100644 index 0000000..bdd2839 --- /dev/null +++ b/app/graph/resolver.go @@ -0,0 +1,24 @@ +package graph + +import ( + "github.com/adrianlzt/piclimbing/backend/speed" + "github.com/adrianlzt/piclimbing/backend/strength" + "github.com/go-logr/logr" +) + +// This file will not be regenerated automatically. +// +// It serves as dependency injection for your app, add any dependencies you require here. + +// Resolver is used to inject dependencies in the GraphQL resolvers +type Resolver struct { + Log logr.Logger + StrengthDataCh <-chan strength.ExportData + StrengthBackendCmd <-chan strength.BackendCmd + StrengthControlCh chan<- strength.Control + StrengthMsgCh <-chan strength.ClientMsg + SpeedDataCh <-chan speed.ExportData + SpeedBackendCmd <-chan speed.BackendCmd + SpeedControlCh chan<- speed.Control + SpeedMsgCh <-chan speed.ClientMsg +} diff --git a/app/graph/schema.graphqls b/app/graph/schema.graphqls new file mode 100644 index 0000000..a59aa78 --- /dev/null +++ b/app/graph/schema.graphqls @@ -0,0 +1,194 @@ +""" +Speed has all the data related with measuring speed exercises +""" +type Speed{ + """ + Uniq identifier for each data pushed + """ + Id: Int! + """ + Absolute position (height) of the climber (meters) + """ + position: Float! + """ + Current speed of the climber (m/s) + """ + speed: Float! + """ + Number of pull ups done since the last reset + """ + pull_ups: Int + """ + Difference of speed between the fastest pull up and the latest one, in percentage (0-100) + """ + speed_loss: Float + """ + Speed of the last pull up (m/s) + """ + last_speed: Float + """ + Max speed since reset (m/s) + """ + max_speed: Float +} + +""" +Strength data +""" +type Strength{ + """ + Time since the exercise started (seconds) + """ + time: Float + """ + Current strength (Newtons) + """ + strength: Float + """ + Max strength since reset (Newtons) + """ + max_strength: Float + """ + Average strength since reset (Newtons) + """ + avg_strength: Float + """ + RFD: rate of force development since reset (N/s) + Should be normalized with the weight in the frontend + """ + rfd: Float + """ + FTI: force-time integral since reset () + Should be normalized with the weight? + """ + fti: Float + """ + Difference of strength between the max and the latest value, in percentage (0-100) + """ + strength_loss: Float + """ + Duty cycle + Percentage of exercise active vs rest + """ + duty_cycle: Float + """ + Time between measures (seconds) + """ + interval: Float +} + +""" +Notifications from the coach backend app to the user +""" +type Coach{ + """ + Text with the notification + """ + message: String + status: COACH_STATUS +} + +enum SPEED_COMMAND_TYPE{ + SIMULATE + PAUSE + RESTART + RESET + CALIBRATE +} + +enum STRENGTH_COMMAND_BACKEND_TYPE{ + END +} + +enum SPEED_COMMAND_BACKEND_TYPE{ + END +} + +enum STRENGTH_COMMAND_TYPE{ + SIMULATE + PAUSE + RESTART + TARE + CALIBRATE + SAMPLING +} + +""" +Commands send from the client to the backend to control the state +""" +input SpeedCommand{ + command: SPEED_COMMAND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +""" +Commands send from the client to the backend to control the state +""" +input StrengthCommand{ + command: STRENGTH_COMMAND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +type SpeedCommandBackend{ + command: SPEED_COMMAND_BACKEND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +""" +Commands send from the backend to the client to control the state +""" +type StrengthCommandBackend{ + command: STRENGTH_COMMAND_BACKEND_TYPE + """ + Value associated with some commands + """ + value: Float +} + +""" +Response to commands +""" +type CommandResponse{ + message: String +} + +enum COACH_STATUS{ + READY + PAUSED +} + +type Subscription{ + speed: Speed + strength: Strength + coach: Coach + """ + Receive commands from the backend strengh realted + """ + strengthBackendCommands: StrengthCommandBackend + """ + Receive commands from the backend speed related + """ + speedBackendCommands: SpeedCommandBackend +} + +type Mutation{ + strengthCommand( + params: StrengthCommand + ): CommandResponse! + speedCommand( + params: SpeedCommand + ): CommandResponse! +} +schema{ + mutation: Mutation, + subscription: Subscription +} diff --git a/app/graph/schema.resolvers.go b/app/graph/schema.resolvers.go new file mode 100644 index 0000000..d90579b --- /dev/null +++ b/app/graph/schema.resolvers.go @@ -0,0 +1,235 @@ +package graph + +// This file will be automatically regenerated based on the schema, any resolver implementations +// will be copied through when generating and any unknown code will be moved to the end. + +import ( + "context" + "fmt" + "time" + + "github.com/adrianlzt/piclimbing/backend/graph/generated" + "github.com/adrianlzt/piclimbing/backend/graph/model" + "github.com/adrianlzt/piclimbing/backend/speed" + "github.com/adrianlzt/piclimbing/backend/strength" +) + +func (r *mutationResolver) StrengthCommand(ctx context.Context, params *model.StrengthCommand) (*model.CommandResponse, error) { + // TODO move this commands to functions instead of sending by channels and waiting for the response? + switch *params.Command { + case model.StrengthCommandTypeRestart: + r.StrengthControlCh <- strength.Control{ + Type: strength.StrengthCommandRestart, + } + case model.StrengthCommandTypePause: + r.StrengthControlCh <- strength.Control{ + Type: strength.StrengthCommandPause, + } + case model.StrengthCommandTypeTare: + r.StrengthControlCh <- strength.Control{ + Type: strength.StrengthCommandTare, + } + case model.StrengthCommandTypeCalibrate: + r.StrengthControlCh <- strength.Control{ + Type: strength.StrengthCommandCalibrate, + Value: *params.Value, + } + case model.StrengthCommandTypeSimulate: + r.StrengthControlCh <- strength.Control{ + Type: strength.StrengthCommandSimulate, + } + default: + r.Log.Error(fmt.Errorf("Unkown value"), "Strength command handler", "cmd", *params.Command) + } + + // Get response or send error + msg := "" + var err error + select { + case v := <-r.StrengthMsgCh: + msg = v.Value + case <-time.NewTimer(1 * time.Second).C: + err = fmt.Errorf("Timeout waiting for command response") + } + return &model.CommandResponse{Message: &msg}, err +} + +func (r *mutationResolver) SpeedCommand(ctx context.Context, params *model.SpeedCommand) (*model.CommandResponse, error) { + switch *params.Command { + case model.SpeedCommandTypeRestart: + r.SpeedControlCh <- speed.Control{ + Type: speed.SpeedCommandRestart, + } + case model.SpeedCommandTypePause: + r.SpeedControlCh <- speed.Control{ + Type: speed.SpeedCommandPause, + } + case model.SpeedCommandTypeReset: + r.SpeedControlCh <- speed.Control{ + Type: speed.SpeedCommandReset, + } + case model.SpeedCommandTypeCalibrate: + r.SpeedControlCh <- speed.Control{ + Type: speed.SpeedCommandCalibrate, + Value: *params.Value, + } + case model.SpeedCommandTypeSimulate: + r.SpeedControlCh <- speed.Control{ + Type: speed.SpeedCommandSimulate, + } + } + + // Get response or send error + msg := "" + var err error + select { + case v := <-r.SpeedMsgCh: + msg = v.Value + case <-time.NewTimer(1 * time.Second).C: + err = fmt.Errorf("Timeout waiting for command response") + } + return &model.CommandResponse{Message: &msg}, err +} + +func (r *subscriptionResolver) Speed(ctx context.Context) (<-chan *model.Speed, error) { + r.Log.V(2).Info("sub speed") + + // TODO size? + ch := make(chan *model.Speed) + + go func() { + for { + select { + case v := <-r.SpeedDataCh: + s := model.Speed{ + ID: v.Id, + Position: v.Position, + Speed: v.Speed, + PullUps: v.PullUps, + SpeedLoss: v.SpeedLoss, + LastSpeed: v.LastSpeed, + MaxSpeed: v.MaxSpeed, + } + ch <- &s + case <-ctx.Done(): + r.Log.V(3).Info("client exited") + return + } + } + }() + + return ch, nil +} + +func (r *subscriptionResolver) Strength(ctx context.Context) (<-chan *model.Strength, error) { + r.Log.V(2).Info("sub strength") + + // TODO size? + ch := make(chan *model.Strength) + + go func() { + for { + select { + case v := <-r.StrengthDataCh: + s := model.Strength{ + Time: v.Time, + Strength: v.Strength, + MaxStrength: v.MaxStrength, + AvgStrength: v.AvgStrength, + Rfd: v.RFD, + Fti: v.FTI, + StrengthLoss: v.StrengthLoss, + DutyCycle: nil, + Interval: nil, // TODO fill + } + ch <- &s + case <-ctx.Done(): + r.Log.V(3).Info("client exited") + return + } + } + }() + + return ch, nil +} + +func (r *subscriptionResolver) Coach(ctx context.Context) (<-chan *model.Coach, error) { + ch := make(chan *model.Coach) + + go func() { + for { + text := "foo" + status := model.CoachStatusReady + + msg := model.Coach{ + Message: &text, + Status: &status, + } + ch <- &msg + time.Sleep(1 * time.Second) + } + }() + + return ch, nil +} + +func (r *subscriptionResolver) StrengthBackendCommands(ctx context.Context) (<-chan *model.StrengthCommandBackend, error) { + r.Log.V(2).Info("sub strength backend commands") + + // TODO size? + ch := make(chan *model.StrengthCommandBackend) + + go func() { + for { + select { + case v := <-r.StrengthBackendCmd: + c := model.StrengthCommandBackendType(*v.Command) + s := model.StrengthCommandBackend{ + Command: &c, + Value: v.Value, + } + ch <- &s + case <-ctx.Done(): + r.Log.V(3).Info("client exited", "function", "StrengthBackendCommands") + return + } + } + }() + + return ch, nil +} + +func (r *subscriptionResolver) SpeedBackendCommands(ctx context.Context) (<-chan *model.SpeedCommandBackend, error) { + r.Log.V(2).Info("sub speed backend commands") + + // TODO size? + ch := make(chan *model.SpeedCommandBackend) + + go func() { + for { + select { + case v := <-r.SpeedBackendCmd: + c := model.SpeedCommandBackendType(*v.Command) + s := model.SpeedCommandBackend{ + Command: &c, + Value: v.Value, + } + ch <- &s + case <-ctx.Done(): + r.Log.V(3).Info("client exited", "function", "SpeedBackendCommands") + return + } + } + }() + + return ch, nil +} + +// Mutation returns generated.MutationResolver implementation. +func (r *Resolver) Mutation() generated.MutationResolver { return &mutationResolver{r} } + +// Subscription returns generated.SubscriptionResolver implementation. +func (r *Resolver) Subscription() generated.SubscriptionResolver { return &subscriptionResolver{r} } + +type mutationResolver struct{ *Resolver } +type subscriptionResolver struct{ *Resolver } diff --git a/app/main.go b/app/main.go new file mode 100644 index 0000000..3fce78d --- /dev/null +++ b/app/main.go @@ -0,0 +1,175 @@ +package main + +import ( + "flag" + "fmt" + "net/http" + "runtime" + "strconv" + "time" + + "k8s.io/klog" + "k8s.io/klog/klogr" + + "github.com/99designs/gqlgen/graphql/handler" + "github.com/99designs/gqlgen/graphql/handler/extension" + "github.com/99designs/gqlgen/graphql/handler/lru" + "github.com/99designs/gqlgen/graphql/handler/transport" + "github.com/adrianlzt/piclimbing/backend/graph" + "github.com/adrianlzt/piclimbing/backend/graph/generated" + "github.com/adrianlzt/piclimbing/backend/speed" + "github.com/adrianlzt/piclimbing/backend/strength" + "github.com/cdreier/golang-snippets/snippets" + "github.com/go-chi/chi" + "github.com/gorilla/websocket" + "github.com/markbates/pkger" + "github.com/rs/cors" + "github.com/toqueteos/webbrowser" +) + +func main() { + encoderDeviceFile := flag.String("encoder-device", "/dev/input/event0", "Device where encoder is connected") + strengthDeviceFile := flag.String("strength-device", "/sys/devices/platform/hx711/iio:device0/in_voltage0_raw", "Device where the load cell is connected") + strengthGatherTime := flag.Float64("strength-gather-time", 20.0, "Wait time, in milliseconds, between gathers, to have a smooth distribution of collected data") + enableEncoder := flag.Bool("enable-encoder", true, "Enable/disable the encoder part and all the speed measurements") + enableLoadCell := flag.Bool("enable-load-cell", true, "Enable/disable the load cell part and all the strength measurements") + port := flag.Int("port", 8080, "HTTP listen port") + speedSampling := flag.Duration("speed-sampling", 100*time.Millisecond, "How often should be values pushed to the client") + strengthSampling := flag.Duration("strength-sampling", 100*time.Millisecond, "How often should be values pushed to the client") + + // Logger + klog.InitFlags(nil) + flag.Set("stderrthreshold", "INFO") + // level 5: full debug + // level 4: captured data, avoiding duplicates + // level 3: commands and other operations not related with data capture + // level 2: start of goroutines + // level 1: ? + flag.Set("v", "1") + flag.Parse() + + log := klogr.New() + + // TODO chan size + // Channel to move data between speed calculator and GraphQL + speedData := make(chan speed.ExportData, 500) + speedControl := make(chan speed.Control, 500) + speedMsg := make(chan speed.ClientMsg, 500) + // Channel to send commands from this app to the client + speedBackendCmd := make(chan speed.BackendCmd, 500) + + // TODO chan size + // Channel to move data between strength calculator and GraphQL + strengthData := make(chan strength.ExportData, 500) + strengthControl := make(chan strength.Control, 500) + strengthMsg := make(chan strength.ClientMsg, 500) + // Channel to send commands from this app to the client + strengthBackendCmd := make(chan strength.BackendCmd, 500) + + speed := speed.Speed{ + Log: log, + ClientSampling: *speedSampling, + Device: *encoderDeviceFile, + ExportChannel: speedData, + ControlChannel: speedControl, + ClientMessagesChannel: speedMsg, + BackendCmdChannel: speedBackendCmd, + } + + strength := strength.Strength{ + Log: log, + ClientSampling: *strengthSampling, + Device: *strengthDeviceFile, + GatherTime: *strengthGatherTime, + ExportChannel: strengthData, + ControlChannel: strengthControl, + ClientMessagesChannel: strengthMsg, + BackendCmdChannel: strengthBackendCmd, + } + + resolver := graph.Resolver{ + Log: log, + StrengthDataCh: strengthData, + StrengthControlCh: strengthControl, + StrengthMsgCh: strengthMsg, + StrengthBackendCmd: strengthBackendCmd, + SpeedMsgCh: speedMsg, + SpeedControlCh: speedControl, + SpeedDataCh: speedData, + SpeedBackendCmd: speedBackendCmd, + } + + log.V(2).Info("start", "enableEncoder", *enableEncoder, "enableLoadCell", *enableLoadCell) + + if *enableEncoder { + go speed.RunSpeed() + } + + if *enableLoadCell { + go strength.RunStrength() + } + + // GraphQL + srv := handler.New(generated.NewExecutableSchema(generated.Config{Resolvers: &resolver})) + //srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &resolver})) + + router := chi.NewRouter() + + // Add CORS middleware around every request + // See https://github.com/rs/cors for full option listing + router.Use(cors.New(cors.Options{ + AllowedOrigins: []string{ + // Allow all + "*", + }, + AllowCredentials: true, + Debug: false, + }).Handler) + + // If we don't use handler.NewDefaultServer, to be able to set CORS in WS, we have to add all the + // others Transports + srv.AddTransport(&transport.Websocket{ + Upgrader: websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + // Check against your desired domains here + //return r.Host == "localhost" + // Allow all + return true + }, + ReadBufferSize: 1024, + WriteBufferSize: 1024, + }, + }) + srv.AddTransport(transport.Options{}) + srv.AddTransport(transport.GET{}) + srv.AddTransport(transport.POST{}) + srv.AddTransport(transport.MultipartForm{}) + + srv.SetQueryCache(lru.New(1000)) + + srv.Use(extension.Introspection{}) + srv.Use(extension.AutomaticPersistedQuery{ + Cache: lru.New(100), + }) + + //router.Handle("/", playground.Handler("GraphQL playground", "/query")) + router.Handle("/query", srv) + + distDir := pkger.Dir("/frontend/public") + snippets.ChiFileServer(router, "/", distDir) + + if runtime.GOOS == "linux" && runtime.GOARCH == "arm" { + // raspberry + // TODO detect IP address and use it instead of 127.0.0.1 + fmt.Printf("Go to: http://127.0.0.1.xip.io:%v\n", strconv.Itoa(*port)) + } else { + fmt.Printf("Go to: http://127.0.0.1.xip.io:%v\n", strconv.Itoa(*port)) + // TODO not working + webbrowser.Open(fmt.Sprintf("http://127.0.0.1.xip.io:%v\n", strconv.Itoa(*port))) + } + + err := http.ListenAndServe(":"+strconv.Itoa(*port), router) + if err != nil { + panic(err) + } +} diff --git a/app/simulator/README.md b/app/simulator/README.md new file mode 100644 index 0000000..d093e03 --- /dev/null +++ b/app/simulator/README.md @@ -0,0 +1,14 @@ +# Device simulator + +Using evemu, it is possible to create a virtual device simulating the linear encoder. + +It is necessary to have evemu installed in the system. + +The python script generates test data as requested and plays it into the device. + +The script should run as root. + +The used who runs the go app should be in the "input" group. +``` +sudo gpasswd -a USER input +``` diff --git a/app/simulator/encoder.props b/app/simulator/encoder.props new file mode 100644 index 0000000..70e20f8 --- /dev/null +++ b/app/simulator/encoder.props @@ -0,0 +1,53 @@ +# EVEMU 1.3 +# Kernel: 4.19.108+ +# Input device name: "rotary@4" +# Input device ID: bus 0x19 vendor 0000 product 0000 version 0000 +# Supported events: +# Event type 0 (EV_SYN) +# Event code 0 (SYN_REPORT) +# Event code 1 (SYN_CONFIG) +# Event code 2 (SYN_MT_REPORT) +# Event code 3 (SYN_DROPPED) +# Event code 4 ((null)) +# Event code 5 ((null)) +# Event code 6 ((null)) +# Event code 7 ((null)) +# Event code 8 ((null)) +# Event code 9 ((null)) +# Event code 10 ((null)) +# Event code 11 ((null)) +# Event code 12 ((null)) +# Event code 13 ((null)) +# Event code 14 ((null)) +# Event code 15 (SYN_MAX) +# Event type 2 (EV_REL) +# Event code 0 (REL_X) +# Properties: +N: rotary@4 +I: 0019 0000 0000 0000 +P: 00 00 00 00 00 00 00 00 +B: 00 0b 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 02 01 00 00 00 00 00 00 00 +B: 03 00 00 00 00 00 00 00 00 +B: 04 00 00 00 00 00 00 00 00 +B: 05 00 00 00 00 00 00 00 00 +B: 11 00 00 00 00 00 00 00 00 +B: 12 00 00 00 00 00 00 00 00 +B: 14 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +################################ +# Waiting for events # +################################ diff --git a/app/simulator/encoder_simulator.py b/app/simulator/encoder_simulator.py new file mode 100755 index 0000000..6e1d088 --- /dev/null +++ b/app/simulator/encoder_simulator.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python +""" +This script writes a file with the events needed to simulate a session of exercise. +After an increase/decrease event a zero event is sent (this is how the sensor behaves). +Should be run as root, it needs to create a /dev/input/ file +""" + +import os +import sys +import evemu +import math +import time +import argparse +import tempfile +import logging + +FORMAT = "[%(asctime)s %(levelname)s %(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s" +logging.basicConfig(level=logging.WARNING, format=FORMAT) +logger = logging.getLogger(__name__) + +# Events generated by the device when is turned CW or CCW +# For our use, is forward (increas) or backwards (decrease) +INCREASE_EVENT = "E: {time:.6f} 0002 0000 0001" +DECREASE_EVENT = "E: {time:.6f} 0002 0000 -001" +ZERO_EVENT = "E: {time:.6f} 0000 0000 0000" + +# Distance in meters for each event +TICK_DISTANCE = 0.00179267 + +# Min speed for events, to avoid large gaps +MIN_SPEED = 0.1 + +DEVICE_PROPERTIES = b"""N: rotary@4 +I: 0019 0000 0000 0000 +P: 00 00 00 00 00 00 00 00 +B: 00 0b 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 02 01 00 00 00 00 00 00 00 +B: 03 00 00 00 00 00 00 00 00 +B: 04 00 00 00 00 00 00 00 00 +B: 05 00 00 00 00 00 00 00 00 +B: 11 00 00 00 00 00 00 00 00 +B: 12 00 00 00 00 00 00 00 00 +B: 14 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +""" + + +class Main: + + def __init__(self, args=False): + self.args = args + self.device = evemu.Device("encoder.props") + + # Sleep 1s to be sure that the go app opens the file device + time.sleep(1) + + def _get_simulation_data(self): + """ + Return the string with the contents of the simulated + data according to the parameters established + """ + # Add header + data = [DEVICE_PROPERTIES] + + # Absolute time in seconds + event_time = 0.000001 + + # Move slowly to the start position + for _ in range(0, int(self.args.min_height / TICK_DISTANCE)): + data.append(bytes(INCREASE_EVENT.format(time=event_time) + "\n", "UTF-8")) + data.append(bytes(ZERO_EVENT.format(time=event_time) + "\n", "UTF-8")) + # Move at 0.1m/s + event_time += TICK_DISTANCE / 0.1 + + for i in range(0, self.args.count): + # Get the max speed for each serie + # First serie at max_speed, last serie at max_speed*speed_loss + speed = self.args.max_speed + if self.args.count > 1: + speed = self.args.max_speed * (1 - (self.args.speed_loss/100 * i / (self.args.count - 1))) + + d, event_time = self._get_one_pullup(event_time, speed) + data.extend(d) + + # Move slowly to the floor + for _ in range(0, int(self.args.min_height / TICK_DISTANCE)): + data.append(bytes(DECREASE_EVENT.format(time=event_time) + "\n", "UTF-8")) + data.append(bytes(ZERO_EVENT.format(time=event_time) + "\n", "UTF-8")) + # Move at 0.1m/s + event_time += TICK_DISTANCE / 0.1 + + return data + + def _get_one_pullup(self, etime, max_speed): + """ + Generate the events for one pull according to + the parameters + """ + logger.info(f"_get_one_pullup max_speed={max_speed}") + + data = [] + + # Complete sin wave simulating the speed of the full pull up. + # Half wave (from 0 to 0) to go up, and same to go down + # The number of steps decide how high the pull up goes + # Get the number of ticks needed to go up and down for the defined distance + distance_ticks = self.args.distance * 2 / TICK_DISTANCE + + range_max = math.pi*2*1000000 + step_size = range_max / distance_ticks + + speed = [max_speed * math.sin(x/1000000) for x in range(0, int(range_max), int(step_size))] + logger.info(f"distance: {self.args.distance} distance_ticks: {distance_ticks}, len(speed): {len(speed)}") + + for s in speed: + # Set a min speed for events, to avoid long times in the top/bottom + if s >= 0 and s < MIN_SPEED: + s = MIN_SPEED + elif s < 0 and s > -MIN_SPEED: + s = -MIN_SPEED + + # The space between points determine the speed + # If speed is positive, the climber is ascending + if s > 0: + data.append(bytes(INCREASE_EVENT.format(time=etime) + "\n", "UTF-8")) + else: + data.append(bytes(DECREASE_EVENT.format(time=etime) + "\n", "UTF-8")) + + data.append(bytes(ZERO_EVENT.format(time=etime) + "\n", "UTF-8")) + + delta = TICK_DISTANCE / abs(s) + logger.debug(f"delta: {delta*1000:.1f}, speed: {s:.2f}, increase: {s>0}") + etime += delta + + return data, etime + + def run(self): + logger.info(sys._getframe().f_code.co_name) + + simulation_data = self._get_simulation_data() + + if self.args.dry_run: + for l in simulation_data: + print(str(l)) + return + + with tempfile.TemporaryFile() as f: + f.writelines(simulation_data) + # flush the file so evemu could read the proper data + f.flush() + os.fsync(f.fileno()) + f.seek(0) + self.device.play(f) + + +def parse_args(argv): + """ + parse arguments/options + + this uses the new argparse module instead of optparse + see: + """ + p = argparse.ArgumentParser(description='Linear encoder device simulator', formatter_class=argparse.ArgumentDefaultsHelpFormatter) + p.add_argument('--dry-run', dest='dry_run', action='store_true', + default=False, help="dry-run - only output the file to stdout") + p.add_argument('-v', '--verbose', dest='verbose', action='count', default=0, + help='verbose output. specify twice for debug-level output.') + p.add_argument("-c", "--count", action="store", help="Number of pull ups.", type=int, default=3) + p.add_argument("-mh", "--min-height", action="store", help="Height at which pullups will be done (meters)", type=float, default=0.9) + p.add_argument("-d", "--distance", action="store", help="Distance traveled during the pullup (meters)", type=float, default=0.54) + p.add_argument("-ms", "--max-speed", action="store", help="Speed of the first pull up (m/s)", type=float, default=1.5) + p.add_argument("-s", "--speed-loss", action="store", help="Speed loos between the first and last pull up (percentage)", type=float, default=20) + + args = p.parse_args(argv) + + return args + + +if __name__ == "__main__": + args = parse_args(sys.argv[1:]) + if args.verbose > 1: + logger.setLevel(logging.DEBUG) + elif args.verbose > 0: + logger.setLevel(logging.INFO) + main = Main(args) + main.run() diff --git a/app/simulator/evemu/__init__.py b/app/simulator/evemu/__init__.py new file mode 100644 index 0000000..217d2cc --- /dev/null +++ b/app/simulator/evemu/__init__.py @@ -0,0 +1,486 @@ +""" +The evemu module provides the Python interface to the kernel-level input device +raw events. +""" + +# Copyright 2011-2012 Canonical Ltd. +# Copyright 2014 Red Hat, Inc. +# +# This library is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranties of +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +import ctypes +import glob +import os +import re +import stat +import tempfile + +import evemu.base + +__all__ = ["Device", + "InputEvent", + "event_get_value", + "event_get_name", + "input_prop_get_value", + "input_prop_get_name"] + +_libevdev = evemu.base.LibEvdev() + +def event_get_value(event_type, event_code = None): + """ + Return the integer-value for the given event type and/or code string + e.g. "EV_ABS" returns 0x03, ("EV_ABS", "ABS_Y") returns 0x01. + Unknown event types or type/code combinations return None. + + If an event code is passed, the event type may be given as integer or + string. + """ + t = -1 + c = -1 + + if isinstance(event_type, int): + event_type = _libevdev.libevdev_event_type_get_name(event_type) + if event_type is None: + return None + + event_type = event_type.decode("iso8859-1") + + event_type = str(event_type).encode("iso8859-1") + t = _libevdev.libevdev_event_type_from_name(event_type) + + if event_code is None: + return None if t < 0 else t + + if isinstance(event_code, int): + event_code = _libevdev.libevdev_event_code_get_name(t, event_code) + if event_code is None: + return None + + event_code = event_code.decode("iso8859-1") + + event_code = str(event_code).encode("iso8859-1") + c = _libevdev.libevdev_event_code_from_name(t, event_code) + + return None if c < 0 else c + +def event_get_name(event_type, event_code = None): + """ + Return the string-value for the given event type and/or code value + e.g. 0x03 returns "EV_ABS", ("EV_ABS", 0x01) returns "ABS_Y" + Unknown event types or type/code combinations return None. + + If an event code is passed, the event type may be given as integer or + string. + """ + if not isinstance(event_type, int): + event_type = event_get_value(event_type) + + if event_type is None: + return None + + if event_code is None: + type_name = _libevdev.libevdev_event_type_get_name(event_type) + + if type_name is None: + return None + + return type_name.decode("iso8859-1") + + if not isinstance(event_code, int): + event_code = event_get_value(event_type, event_code) + + if event_code is None: + return None + + code_name = _libevdev.libevdev_event_code_get_name(event_type, event_code) + if code_name is None: + return None + + return code_name.decode("iso8859-1") + +def input_prop_get_name(prop): + """ + Return the name of the input property, or None if undefined. + """ + if not isinstance(prop, int): + prop = input_prop_get_value(prop) + + if prop is None: + return None + + prop = _libevdev.libevdev_property_get_name(prop) + if prop is None: + return None + + return prop.decode("iso8859-1") + +def input_prop_get_value(prop): + """ + Return the value of the input property, or None if undefined. + """ + if isinstance(prop, int): + prop = input_prop_get_name(prop) + + if prop is None: + return None + + prop = str(prop).encode("iso8859-1") + prop = _libevdev.libevdev_property_from_name(prop) + return None if prop < 0 else prop + +class InputEvent(object): + __slots__ = 'sec', 'usec', 'type', 'code', 'value' + + def __init__(self, sec, usec, type, code, value): + self.sec = sec + self.usec = usec + self.type = type + self.code = code + self.value = value + + def matches(self, type, code = None): + """ + If code is None, return True if the event matches the given event + type. If code is not None, return True if the event matches the + given type/code pair. + + type and code may be ints or string-like ("EV_ABS", "ABS_X"). + """ + if event_get_value(type) != self.type: + return False + + if code != None and event_get_value(self.type, code) != self.code: + return False + + return True + + def __str__(self): + f = tempfile.TemporaryFile() + libc = evemu.base.LibC() + fp = libc.fdopen(f.fileno(), b"w+") + + event = evemu.base.InputEvent() + event.sec = self.sec + event.usec = self.usec + event.type = self.type + event.code = self.code + event.value = self.value + + libevemu = evemu.base.LibEvemu() + libevemu.evemu_write_event(fp, ctypes.byref(event)) + libc.fflush(fp) + f.seek(0) + return f.readline().rstrip() + +class Device(object): + """ + Encapsulates a raw kernel input event device, either an existing one as + reported by the kernel or a pseudodevice as created through a .prop file. + """ + + def __init__(self, f, create=True): + """ + Initialize an evemu Device. + + args: + f -- a file object or filename string for either an existing input + device node (/dev/input/eventNN) or an evemu prop file that can be used + to create a pseudo-device node. + create -- If f points to an evemu prop file, 'create' specifies if a + uinput device should be created + """ + + if type(f) == str: + self._file = open(f) + elif hasattr(f, "read"): + self._file = f + else: + raise TypeError("expected file or file name") + + self._is_propfile = self._check_is_propfile(self._file) + self._libc = evemu.base.LibC() + self._libevemu = evemu.base.LibEvemu() + + self._evemu_device = self._libevemu.evemu_new(b"") + + if self._is_propfile: + fs = self._libc.fdopen(self._file.fileno(), b"r") + self._libevemu.evemu_read(self._evemu_device, fs) + if create: + self._file = self._create_devnode() + else: + self._libevemu.evemu_extract(self._evemu_device, + self._file.fileno()) + + def __del__(self): + if hasattr(self, "_is_propfile") and self._is_propfile: + self._file.close() + self._libevemu.evemu_destroy(self._evemu_device) + + def _create_devnode(self): + self._libevemu.evemu_create_managed(self._evemu_device) + return open(self._find_newest_devnode(self.name), 'r+b', buffering=0) + + def _find_newest_devnode(self, target_name): + newest_node = (None, float(0)) + for sysname in glob.glob("/sys/class/input/event*/device/name"): + with open(sysname) as f: + name = f.read().rstrip() + if name == target_name: + ev = re.search("(event\d+)", sysname) + if ev: + devname = os.path.join("/dev/input", ev.group(1)) + ctime = os.stat(devname).st_ctime + if ctime > newest_node[1]: + newest_node = (devname, ctime) + return newest_node[0] + + def _check_is_propfile(self, f): + if stat.S_ISCHR(os.fstat(f.fileno()).st_mode): + return False + + result = False + for line in f.readlines(): + if line.startswith("N:"): + result = True + break + elif line.startswith("# EVEMU"): + result = True + break + elif line[0] != "#": + raise TypeError("file must be a device special or prop file") + + f.seek(0) + return result + + def describe(self, prop_file): + """ + Gathers information about the input device and prints it + to prop_file. This information can be parsed later when constructing + a Device to create a virtual input device with the same properties. + + You need the required permissions to access the device file to + succeed (usually root). + + prop_file must be a real file with fileno(), not file-like. + """ + if not hasattr(prop_file, "fileno"): + raise TypeError("expected file") + + fs = self._libc.fdopen(prop_file.fileno(), b"w") + self._libevemu.evemu_write(self._evemu_device, fs) + self._libc.fflush(fs) + + def events(self, events_file=None): + """ + Reads the events from the given file and returns them as a list of + dicts. + + If not None, events_file must be a real file with fileno(), not + file-like. If None, the file used for creating this device is used. + """ + if events_file: + if not hasattr(events_file, "fileno"): + raise TypeError("expected file") + else: + events_file = self._file + + fs = self._libc.fdopen(events_file.fileno(), b"r") + event = evemu.base.InputEvent() + while self._libevemu.evemu_read_event(fs, ctypes.byref(event)) > 0: + yield InputEvent(event.sec, event.usec, event.type, event.code, event.value) + + self._libc.rewind(fs) + + def play(self, events_file): + """ + Replays an event sequence, as provided by the events_file, + through the input device. The event sequence must be in + the form created by the record method. + + You need the required permissions to access the device file to + succeed (usually root). + + events_file must be a real file with fileno(), not file-like. + """ + if not hasattr(events_file, "fileno"): + raise TypeError("expected file") + + fs = self._libc.fdopen(events_file.fileno(), b"r") + self._libevemu.evemu_play(fs, self._file.fileno()) + + def record(self, events_file, timeout=10000): + """ + Captures events from the input device and prints them to the + events_file. The events can be parsed by the play method, + allowing a virtual input device to emit the exact same event + sequence. + + You need the required permissions to access the device file to + succeed (usually root). + + events_file must be a real file with fileno(), not file-like. + """ + if not hasattr(events_file, "fileno"): + raise TypeError("expected file") + + fs = self._libc.fdopen(events_file.fileno(), b"w") + self._libevemu.evemu_record(fs, self._file.fileno(), timeout) + self._libc.fflush(fs) + + @property + def version(self): + """ + Gets the version of the evemu library used to create the Device. + """ + return self._libevemu.evemu_get_version(self._evemu_device) + + @property + def devnode(self): + """ + Gets the name of the /dev node of the input device. + """ + return self._file.name + + @property + def name(self): + """ + Gets the name of the input device (as reported by the device). + """ + result = self._libevemu.evemu_get_name(self._evemu_device) + return result.decode("iso8859-1") + + @property + def id_bustype(self): + """ + Identifies the kernel device bustype. + """ + return self._libevemu.evemu_get_id_bustype(self._evemu_device) + + @property + def id_vendor(self): + """ + Identifies the kernel device vendor. + """ + return self._libevemu.evemu_get_id_vendor(self._evemu_device) + + @property + def id_product(self): + """ + Identifies the kernel device product. + """ + return self._libevemu.evemu_get_id_product(self._evemu_device) + + @property + def id_version(self): + """ + Identifies the kernel device version. + """ + return self._libevemu.evemu_get_id_version(self._evemu_device) + + def get_abs_current_value(self, event_code): + """ + Return the current value for the given EV_ABS value. + + event_code may be an int or string-like ("ABS_X"). + """ + if not isinstance(event_code, int): + event_code = event_get_value("EV_ABS", event_code) + return self._libevemu.evemu_get_abs_current_value(self._evemu_device, + event_code) + + def get_abs_minimum(self, event_code): + """ + Return the axis minimum for the given EV_ABS value. + + event_code may be an int or string-like ("ABS_X"). + """ + if not isinstance(event_code, int): + event_code = evemu.event_get_value("EV_ABS", event_code) + return self._libevemu.evemu_get_abs_minimum(self._evemu_device, + event_code) + + def get_abs_maximum(self, event_code): + """ + Return the axis maximum for the given EV_ABS value. + + event_code may be an int or string-like ("ABS_X"). + """ + if not isinstance(event_code, int): + event_code = evemu.event_get_value("EV_ABS", event_code) + return self._libevemu.evemu_get_abs_maximum(self._evemu_device, + event_code) + + def get_abs_fuzz(self, event_code): + """ + Return the abs fuzz for the given EV_ABS value. + + event_code may be an int or string-like ("ABS_X"). + """ + if not isinstance(event_code, int): + event_code = evemu.event_get_value("EV_ABS", event_code) + return self._libevemu.evemu_get_abs_fuzz(self._evemu_device, + event_code) + + def get_abs_flat(self, event_code): + """ + Return the abs flat for the given EV_ABS value. + + event_code may be an int or string-like ("ABS_X"). + """ + if not isinstance(event_code, int): + event_code = evemu.event_get_value("EV_ABS", event_code) + return self._libevemu.evemu_get_abs_flat(self._evemu_device, + event_code) + + def get_abs_resolution(self, event_code): + """ + Return the resolution for the given EV_ABS value. + + event_code may be an int or string-like ("ABS_X"). + """ + if not isinstance(event_code, int): + event_code = evemu.event_get_value("EV_ABS", event_code) + return self._libevemu.evemu_get_abs_resolution(self._evemu_device, + event_code) + + # don't change 'event_code' to prop, it breaks API + def has_prop(self, event_code): + """ + Return True if the device supports the given input property, + or False otherwise. + + event_code may be an int or string-like ("INPUT_PROP_DIRECT"). + """ + if not isinstance(event_code, int): + event_code = evemu.input_prop_get_value(event_code) + result = self._libevemu.evemu_has_prop(self._evemu_device, event_code) + return bool(result) + + def has_event(self, event_type, event_code): + """ + Return True if the device supports the given event type/code + pair, or False otherwise. + + event_type and event_code may be ints or string-like ("EV_REL", + "REL_X"). + """ + if not isinstance(event_type, int): + event_type = evemu.event_get_value(event_type) + if not isinstance(event_code, int): + event_code = evemu.event_get_value(event_type, event_code) + result = self._libevemu.evemu_has_event(self._evemu_device, + event_type, + event_code) + return bool(result) + diff --git a/app/simulator/evemu/base.py b/app/simulator/evemu/base.py new file mode 100644 index 0000000..64ec5cd --- /dev/null +++ b/app/simulator/evemu/base.py @@ -0,0 +1,460 @@ +""" +The base module provides classes wrapping shared libraries. +""" +import ctypes +import ctypes.util +import os + +# Import types directly, so they don't have to be prefixed with "ctypes.". +from ctypes import c_char_p, c_int, c_uint, c_void_p, c_long, c_int32, c_uint16 + +import evemu.exception + + +def raise_error_if(raise_error, result, func, args): + """ + Raise an ExecutionError for an unexpected result (raise_error == True). + + The exception message includes the API call (name) plus arguments, the + unexpected result and, if errno is not zero, text describing the + error number. + """ + def get_call_str(): + """ Returns a str 'function_name(argument_values...)'. """ + strargs = [] + for (num, arg) in enumerate(func.argtypes): + # convert args to str for readable output + if arg == c_char_p: + strargs.append('"%s"' % args[num].decode("iso8859-1")) + elif arg == c_void_p: + strargs.append(hex(int(args[num]))) + else: + strargs.append(str(args[num])) + return "%s(%s)" % (func.__name__, ", ".join(strargs)) + + def get_retval_str(): + """ Returns a str with the unexpected return value. """ + return ", Unexpected return value: %s" % result + + def get_errno_str(): + """ Returns a str describing the error number or an empty string. """ + errno = ctypes.get_errno() + if errno != 0: + return ", errno[%d]: %s" % (errno, os.strerror(errno)) + else: + return "" + + if raise_error: + msg = "%s%s%s" % (get_call_str(), get_retval_str(), get_errno_str()) + raise evemu.exception.ExecutionError(msg) + else: + # If the errcheck function returns the argument tuple it receives + # unchanged, ctypes continues the normal processing it does on the + # output parameters. + return args + + +def expect_eq_zero(result, func, args): + """ Expect 'result' being equal to zero. """ + return raise_error_if(result != 0, result, func, args) + + +def expect_ge_zero(result, func, args): + """ Expect 'result' being greater or equal to zero. """ + return raise_error_if(result < 0, result, func, args) + + +def expect_gt_zero(result, func, args): + """ Expect 'result' being greater then zero. """ + return raise_error_if(result <= 0, result, func, args) + + +def expect_not_none(result, func, args): + """ Expect 'result' being not None. """ + return raise_error_if(result is None, result, func, args) + + +class LibraryWrapper(object): + """ + Base class for wrapping a shared library. + """ + _loaded_lib = None + # Class variable containing the instance returned by CDLL(), which + # represents the shared library. + # Initialized once, shared between all instances of this class. + + def __init__(self): + super(LibraryWrapper, self).__init__() + self._load() + + # Prototypes for the API calls to wrap. Needs to be overwritten by sub + # classes. + _api_prototypes = { + #"API_CALL_NAME": { + # "argtypes": sequence of ARGUMENT TYPES, + # "restype": RETURN TYPE, + # "errcheck": callback for return value checking, optional + # }, + } + + @classmethod + def _load(cls): + """ + Returns an instance of the wrapped shared library. + + If not already initialized: set argument and return types on API + calls and optionally a callback function for return value checking. + Add the API call as attribute to the class at the end. + """ + if cls._loaded_lib is not None: + # Already initialized, just return it. + return cls._loaded_lib + + # Get an instance of the wrapped shared library. + cls._loaded_lib = cls._cdll() + + # Iterate the API call prototypes. + for (name, attrs) in cls._api_prototypes.items(): + # Get the API call. + api_call = getattr(cls._loaded_lib, name) + # Add argument and return types. + api_call.argtypes = attrs["argtypes"] + api_call.restype = attrs["restype"] + # Optionally, add a callback for return value checking. + if "errcheck" in attrs: + api_call.errcheck = attrs["errcheck"] + # Add the API call as attribute to the class. + setattr(cls, name, api_call) + + return cls._loaded_lib + + @staticmethod + # @abc.abstractmethod - Would be nice here, but it can't be mixed with + # @staticmethod until Python 3.3. + def _cdll(): + """ Returns a new instance of the wrapped shared library. """ + raise NotImplementedError + + +class LibC(LibraryWrapper): + """ + Wrapper for API calls to the C library. + """ + + @staticmethod + def _cdll(): + return ctypes.CDLL("libc.so.6", use_errno=True) + + _api_prototypes = { + "fdopen": { + "argtypes": (c_int, c_char_p), + "restype": c_void_p, + "errcheck": expect_not_none + }, + "fflush": { + "argtypes": (c_void_p,), + "restype": c_int, + "errcheck": expect_eq_zero + }, + "rewind": { + "argtypes": (c_void_p,), + "restype": None, + }, + } + +class LibEvdev(LibraryWrapper): + """ + Wrapper for API calls to libevdev + """ + + @staticmethod + def _cdll(): + return ctypes.CDLL("libevdev.so", use_errno=True) + + _api_prototypes = { + #const char *libevdev_event_type_get_name(unsigned int type); + "libevdev_event_type_get_name": { + "argtypes": (c_uint,), + "restype": c_char_p + }, + #int libevdev_event_type_from_name(const char *name); + "libevdev_event_type_from_name": { + "argtypes": (c_char_p,), + "restype": c_int + }, + #const char *libevdev_event_code_get_name(unsigned int type, unsigned int code); + "libevdev_event_code_get_name": { + "argtypes": (c_uint, c_uint,), + "restype": c_char_p + }, + #int libevdev_event_code_from_name(unsigned int type, const char *name); + "libevdev_event_code_from_name": { + "argtypes": (c_uint, c_char_p,), + "restype": c_int + }, + #const char *libevdev_property_get_name(unsigned int prop); + "libevdev_property_get_name": { + "argtypes": (c_uint,), + "restype": c_char_p + }, + #int libevdev_property_from_name(const char *name); + "libevdev_property_from_name": { + "argtypes": (c_char_p,), + "restype": c_int + }, + } + +class LibEvemu(LibraryWrapper): + """ + Wrapper for API calls to the evemu library. + """ + + _LIBNAME = "libevemu.so" + + @staticmethod + def _cdll(): + return ctypes.CDLL(LibEvemu._LIBNAME, use_errno=True) + + _api_prototypes = { + #struct evemu_device *evemu_new(const char *name); + "evemu_new": { + "argtypes": (c_char_p,), + "restype": c_void_p, + "errcheck": expect_not_none + }, + #void evemu_delete(struct evemu_device *dev); + "evemu_delete": { + "argtypes": (c_void_p,), + "restype": None + }, + #unsigned int evemu_get_version(const struct evemu_device *dev); + "evemu_get_version": { + "argtypes": (c_void_p,), + "restype": c_uint, + }, + #const char *evemu_get_name(const struct evemu_device *dev); + "evemu_get_name": { + "argtypes": (c_void_p,), + "restype": c_char_p, + "errcheck": expect_not_none + }, + #void evemu_set_name(struct evemu_device *dev, const char *name); + "evemu_set_name": { + "argtypes": (c_void_p, c_char_p), + "restype": None + }, + #unsigned int evemu_get_id_bustype(const struct evemu_device *dev); + "evemu_get_id_bustype": { + "argtypes": (c_void_p,), + "restype": c_uint + }, + #void evemu_set_id_bustype(struct evemu_device *dev, + # unsigned int bustype); + "evemu_set_id_bustype": { + "argtypes": (c_void_p, c_uint), + "restype": None + }, + #unsigned int evemu_get_id_vendor(const struct evemu_device *dev); + "evemu_get_id_vendor": { + "argtypes": (c_void_p,), + "restype": c_uint + }, + #void evemu_set_id_vendor(struct evemu_device *dev, + # unsigned int vendor); + "evemu_set_id_vendor": { + "argtypes": (c_void_p, c_uint), + "restype": None + }, + #unsigned int evemu_get_id_product(const struct evemu_device *dev); + "evemu_get_id_product": { + "argtypes": (c_void_p,), + "restype": c_uint + }, + #void evemu_set_id_product(struct evemu_device *dev, + # unsigned int product); + "evemu_set_id_product": { + "argtypes": (c_void_p, c_uint), + "restype": None + }, + #unsigned int evemu_get_id_version(const struct evemu_device *dev); + "evemu_get_id_version": { + "argtypes": (c_void_p,), + "restype": c_uint + }, + #void evemu_set_id_version(struct evemu_device *dev, + # unsigned int version); + "evemu_set_id_version": { + "argtypes": (c_void_p, c_uint), + "restype": None + }, + #int evemu_get_abs_current_value(const struct evemu_device *dev, + # int code); + "evemu_get_abs_current_value": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #int evemu_get_abs_minimum(const struct evemu_device *dev, int code); + "evemu_get_abs_minimum": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #void evemu_set_abs_minimum(struct evemu_device *dev, int code, + # int min); + "evemu_set_abs_minimum": { + "argtypes": (c_void_p, c_int, c_int), + "restype": None + }, + #int evemu_get_abs_maximum(const struct evemu_device *dev, int code); + "evemu_get_abs_maximum": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #void evemu_set_abs_maximum(struct evemu_device *dev, int code, + # int max); + "evemu_set_abs_maximum": { + "argtypes": (c_void_p, c_int, c_int), + "restype": None + }, + #int evemu_get_abs_fuzz(const struct evemu_device *dev, int code); + "evemu_get_abs_fuzz": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #void evemu_set_abs_fuzz(struct evemu_device *dev, int code, int fuzz); + "evemu_set_abs_fuzz": { + "argtypes": (c_void_p, c_int, c_int), + "restype": None, + }, + #int evemu_get_abs_flat(const struct evemu_device *dev, int code); + "evemu_get_abs_flat": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #void evemu_set_abs_flat(struct evemu_device *dev, int code, int flat); + "evemu_set_abs_flat": { + "argtypes": (c_void_p, c_int, c_int), + "restype": None + }, + #int evemu_get_abs_resolution(const struct evemu_device *dev, + # int code); + "evemu_get_abs_resolution": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #void evemu_set_abs_resolution(struct evemu_device *dev, int code, + # int res); + "evemu_set_abs_resolution": { + "argtypes": (c_void_p, c_int, c_int), + "restype": None + }, + #int evemu_has_prop(const struct evemu_device *dev, int code); + "evemu_has_prop": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #int evemu_has_event(const struct evemu_device *dev, int type, + # int code); + "evemu_has_event": { + "argtypes": (c_void_p, c_int, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #int evemu_has_bit(const struct evemu_device *dev, int type); + "evemu_has_bit": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_ge_zero + }, + #int evemu_extract(struct evemu_device *dev, int fd); + "evemu_extract": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_write(const struct evemu_device *dev, FILE *fp); + "evemu_write": { + "argtypes": (c_void_p, c_void_p), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_read(struct evemu_device *dev, FILE *fp); + "evemu_read": { + "argtypes": (c_void_p, c_void_p), + "restype": c_int, + "errcheck": expect_gt_zero + }, + #int evemu_write_event(FILE *fp, const struct input_event *ev); + "evemu_write_event": { + "argtypes": (c_void_p, c_void_p), + "restype": c_int, + "errcheck": expect_gt_zero + }, + #int evemu_create_event(struct input_event *ev, int type, int code, + # int value); + "evemu_create_event": { + "argtypes": (c_void_p, c_int, c_int, c_int), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_read_event(FILE *fp, struct input_event *ev); + "evemu_read_event": { + "argtypes": (c_void_p, c_void_p), + "restype": c_int + }, + #int evemu_read_event_realtime(FILE *fp, struct input_event *ev, + # struct timeval *evtime); + "evemu_read_event_realtime": { + "argtypes": (c_void_p, c_void_p, c_void_p), + "restype": c_int, + "errcheck": expect_gt_zero + }, + #int evemu_record(FILE *fp, int fd, int ms); + "evemu_record": { + "argtypes": (c_void_p, c_int, c_int), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_play_one(int fd, const struct input_event *ev); + "evemu_play_one": { + "argtypes": (c_int, c_void_p), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_play(FILE *fp, int fd); + "evemu_play": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_create(struct evemu_device *dev, int fd); + "evemu_create": { + "argtypes": (c_void_p, c_int), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #int evemu_create_managed(struct evemu_device *dev); + "evemu_create_managed": { + "argtypes": (c_void_p,), + "restype": c_int, + "errcheck": expect_eq_zero + }, + #void evemu_destroy(struct evemu_device *dev); + "evemu_destroy": { + "argtypes": (c_void_p,), + "restype": None + }, + } + +class InputEvent(ctypes.Structure): + _fields_ = [("sec", c_long), + ("usec", c_long), + ("type", c_uint16), + ("code", c_uint16), + ("value", c_int32)] diff --git a/app/simulator/evemu/const.py b/app/simulator/evemu/const.py new file mode 100644 index 0000000..71ae91a --- /dev/null +++ b/app/simulator/evemu/const.py @@ -0,0 +1,203 @@ +# UNUSED AND DEPRECATED. DO NOT EDIT +# +# This file won't be updated and is left here merely to avoid breakage +# in old code. +LIB = "libevemu.so" +ENCODING="iso8859-1" +UINPUT_NODE = "/dev/uinput" + +event_types = { + "EV_SYN": 0x00, + "EV_KEY": 0x01, + "EV_REL": 0x02, + "EV_ABS": 0x03, + "EV_MSC": 0x04, + "EV_SW": 0x05, + "EV_LED": 0x11, + "EV_SND": 0x12, + "EV_REP": 0x14, + "EV_FF": 0x15, + "EV_PWR": 0x16, + "EV_FF_STATUS": 0x17, + "EV_MAX": 0x1f, + } +event_types["EV_CNT"] = event_types["EV_MAX"] + 1, + +event_names = { + "EV_SYN": "Sync", + "EV_KEY": "Keys or Buttons", + "EV_REL": "Relative Axes", + "EV_ABS": "Absolute Axes", + "EV_MSC": "Miscellaneous", + "EV_SW": "Switches", + "EV_LED": "Leds", + "EV_SND": "Sound", + "EV_REP": "Repeat", + "EV_FF": "Force Feedback", + "EV_PWR": "Power Management", + "EV_FF_STATUS": "Force Feedback Status", +} + +absolute_axes = { + "ABS_X": 0x00, + "ABS_Y": 0x01, + "ABS_Z": 0x02, + "ABS_RX": 0x03, + "ABS_RY": 0x04, + "ABS_RZ": 0x05, + "ABS_THROTTLE": 0x06, + "ABS_RUDDER": 0x07, + "ABS_WHEEL": 0x08, + "ABS_GAS": 0x09, + "ABS_BRAKE": 0x0a, + "ABS_HAT0X": 0x10, + "ABS_HAT0Y": 0x11, + "ABS_HAT1X": 0x12, + "ABS_HAT1Y": 0x13, + "ABS_HAT2X": 0x14, + "ABS_HAT2Y": 0x15, + "ABS_HAT3X": 0x16, + "ABS_HAT3Y": 0x17, + "ABS_PRESSURE": 0x18, + "ABS_DISTANCE": 0x19, + "ABS_TILT_X": 0x1a, + "ABS_TILT_Y": 0x1b, + "ABS_TOOL_WIDTH": 0x1c, + "ABS_VOLUME": 0x20, + "ABS_MISC": 0x28, + "ABS_MT_SLOT": 0x2f, # MT slot being modified + "ABS_MT_TOUCH_MAJOR": 0x30, # Major axis of touching ellipse + "ABS_MT_TOUCH_MINOR": 0x31, # Minor axis (omit if circular) + "ABS_MT_WIDTH_MAJOR": 0x32, # Major axis of approaching ellipse + "ABS_MT_WIDTH_MINOR": 0x33, # Minor axis (omit if circular) + "ABS_MT_ORIENTATION": 0x34, # Ellipse orientation + "ABS_MT_POSITION_X": 0x35, # Center X ellipse position + "ABS_MT_POSITION_Y": 0x36, # Center Y ellipse position + "ABS_MT_TOOL_TYPE": 0x37, # Type of touching device + "ABS_MT_BLOB_ID": 0x38, # Group a set of packets as a blob + "ABS_MT_TRACKING_ID": 0x39, # Unique ID of initiated contact + "ABS_MT_PRESSURE": 0x3a, # Pressure on contact area + "ABS_MT_DISTANCE": 0x3b, # Contact hover distance + "ABS_MAX": 0x3f, + } +# XXX ABS_CNT doesn't always give the same value from test data; disabling it +# for now. +#absolute_axes["ABS_CNT"] = absolute_axes["ABS_MAX"] + 1 + +buttons = { + "BTN_MISC": 0x100, + "BTN_0": 0x100, + "BTN_1": 0x101, + "BTN_2": 0x102, + "BTN_3": 0x103, + "BTN_4": 0x104, + "BTN_5": 0x105, + "BTN_6": 0x106, + "BTN_7": 0x107, + "BTN_8": 0x108, + "BTN_9": 0x109, + + "BTN_MOUSE": 0x110, + "BTN_LEFT": 0x110, + "BTN_RIGHT": 0x111, + "BTN_MIDDLE": 0x112, + "BTN_SIDE": 0x113, + "BTN_EXTRA": 0x114, + "BTN_FORWARD": 0x115, + "BTN_BACK": 0x116, + "BTN_TASK": 0x117, + + "BTN_JOYSTICK": 0x120, + "BTN_TRIGGER": 0x120, + "BTN_THUMB": 0x121, + "BTN_THUMB2": 0x122, + "BTN_TOP": 0x123, + "BTN_TOP2": 0x124, + "BTN_PINKIE": 0x125, + "BTN_BASE": 0x126, + "BTN_BASE2": 0x127, + "BTN_BASE3": 0x128, + "BTN_BASE4": 0x129, + "BTN_BASE5": 0x12a, + "BTN_BASE6": 0x12b, + "BTN_DEAD": 0x12f, + + "BTN_GAMEPAD": 0x130, + "BTN_A": 0x130, + "BTN_B": 0x131, + "BTN_C": 0x132, + "BTN_X": 0x133, + "BTN_Y": 0x134, + "BTN_Z": 0x135, + "BTN_TL": 0x136, + "BTN_TR": 0x137, + "BTN_TL2": 0x138, + "BTN_TR2": 0x139, + "BTN_SELECT": 0x13a, + "BTN_START": 0x13b, + "BTN_MODE": 0x13c, + "BTN_THUMBL": 0x13d, + "BTN_THUMBR": 0x13e, + + "BTN_DIGI": 0x140, + "BTN_TOOL_PEN": 0x140, + "BTN_TOOL_RUBBER": 0x141, + "BTN_TOOL_BRUSH": 0x142, + "BTN_TOOL_PENCIL": 0x143, + "BTN_TOOL_AIRBRUSH": 0x144, + "BTN_TOOL_FINGER": 0x145, + "BTN_TOOL_MOUSE": 0x146, + "BTN_TOOL_LENS": 0x147, + "BTN_TOUCH": 0x14a, + "BTN_STYLUS": 0x14b, + "BTN_STYLUS2": 0x14c, + "BTN_TOOL_DOUBLETAP": 0x14d, + "BTN_TOOL_TRIPLETAP": 0x14e, + "BTN_TOOL_QUADTAP": 0x14f, # Four fingers on trackpad + + "BTN_WHEEL": 0x150, + "BTN_GEAR_DOWN": 0x150, + "BTN_GEAR_UP": 0x151, + + "BTN_TRIGGER_HAPPY": 0x2c0, + "BTN_TRIGGER_HAPPY1": 0x2c0, + "BTN_TRIGGER_HAPPY2": 0x2c1, + "BTN_TRIGGER_HAPPY3": 0x2c2, + "BTN_TRIGGER_HAPPY4": 0x2c3, + "BTN_TRIGGER_HAPPY5": 0x2c4, + "BTN_TRIGGER_HAPPY6": 0x2c5, + "BTN_TRIGGER_HAPPY7": 0x2c6, + "BTN_TRIGGER_HAPPY8": 0x2c7, + "BTN_TRIGGER_HAPPY9": 0x2c8, + "BTN_TRIGGER_HAPPY10": 0x2c9, + "BTN_TRIGGER_HAPPY11": 0x2ca, + "BTN_TRIGGER_HAPPY12": 0x2cb, + "BTN_TRIGGER_HAPPY13": 0x2cc, + "BTN_TRIGGER_HAPPY14": 0x2cd, + "BTN_TRIGGER_HAPPY15": 0x2ce, + "BTN_TRIGGER_HAPPY16": 0x2cf, + "BTN_TRIGGER_HAPPY17": 0x2d0, + "BTN_TRIGGER_HAPPY18": 0x2d1, + "BTN_TRIGGER_HAPPY19": 0x2d2, + "BTN_TRIGGER_HAPPY20": 0x2d3, + "BTN_TRIGGER_HAPPY21": 0x2d4, + "BTN_TRIGGER_HAPPY22": 0x2d5, + "BTN_TRIGGER_HAPPY23": 0x2d6, + "BTN_TRIGGER_HAPPY24": 0x2d7, + "BTN_TRIGGER_HAPPY25": 0x2d8, + "BTN_TRIGGER_HAPPY26": 0x2d9, + "BTN_TRIGGER_HAPPY27": 0x2da, + "BTN_TRIGGER_HAPPY28": 0x2db, + "BTN_TRIGGER_HAPPY29": 0x2dc, + "BTN_TRIGGER_HAPPY30": 0x2dd, + "BTN_TRIGGER_HAPPY31": 0x2de, + "BTN_TRIGGER_HAPPY32": 0x2df, + "BTN_TRIGGER_HAPPY33": 0x2e0, + "BTN_TRIGGER_HAPPY34": 0x2e1, + "BTN_TRIGGER_HAPPY35": 0x2e2, + "BTN_TRIGGER_HAPPY36": 0x2e3, + "BTN_TRIGGER_HAPPY37": 0x2e4, + "BTN_TRIGGER_HAPPY38": 0x2e5, + "BTN_TRIGGER_HAPPY39": 0x2e6, + "BTN_TRIGGER_HAPPY40": 0x2e7, + } diff --git a/app/simulator/evemu/exception.py b/app/simulator/evemu/exception.py new file mode 100644 index 0000000..20782f2 --- /dev/null +++ b/app/simulator/evemu/exception.py @@ -0,0 +1,22 @@ +class EvEmuError(Exception): + pass + + +class WrapperError(EvEmuError): + pass + + +class ExecutionError(EvEmuError): + pass + + +class TestError(EvEmuError): + pass + + +class NullFileHandleError(EvEmuError): + pass + + +class SkipTest(Exception): + pass diff --git a/app/simulator/evemu/testing/__init__.py b/app/simulator/evemu/testing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/simulator/evemu/testing/mocker.py b/app/simulator/evemu/testing/mocker.py new file mode 100644 index 0000000..5cecbd2 --- /dev/null +++ b/app/simulator/evemu/testing/mocker.py @@ -0,0 +1,5 @@ +""" +This module is for use by unit tests in order to mock the uinput device. This +alleviates the need for root access, and thus makes the unit tests something +that can be run by packaging software. +""" diff --git a/app/simulator/evemu/testing/result.py b/app/simulator/evemu/testing/result.py new file mode 100644 index 0000000..37ad2e8 --- /dev/null +++ b/app/simulator/evemu/testing/result.py @@ -0,0 +1,51 @@ +import unittest + +import evemu.tests + + +try: + # Python 2.7 + from unittest import TextTestResult +except ImportError: + # Python 2.4, 2.5, 2.6 + from unittest import _TextTestResult as TextTestResult + + +def get_test_directory(): + return evemu.tests.__path__[0] + + +def get_test_module(): + return get_test_directory().replace("/", ".") + + +class CustomTestResult(TextTestResult): + + def __init__(self, *args, **kwds): + super(CustomTestResult, self).__init__(*args, **kwds) + self.current_module = "" + self.last_module = "" + self.current_class = "" + self.last_class = "" + + def startTest(self, test): + unittest.TestResult.startTest(self, test) + if not self.showAll: + return + self.last_module = self.current_module + self.last_class = self.current_class + method = test._testMethodName + module_and_class = test.id().rsplit(method)[0][:-1] + this_module = ".".join(module_and_class.split(".")[:-1]) + self.current_module = this_module + this_class = module_and_class.split(".")[-1] + self.current_class = this_class + if self.last_module != self.current_module: + heading = "\n%s.%s" % (get_test_module(), this_module) + self.stream.writeln(heading) + if self.last_class != self.current_class: + self.stream.writeln(" %s" % this_class) + self.stream.write(" %s " % method.ljust(50, ".")) + self.stream.write(" ") + self.stream.flush() + diff --git a/app/simulator/evemu/testing/runner.py b/app/simulator/evemu/testing/runner.py new file mode 100644 index 0000000..2c47cf9 --- /dev/null +++ b/app/simulator/evemu/testing/runner.py @@ -0,0 +1,66 @@ +import os +import unittest + +import evemu.testing.result +import evemu.tests + + +def get_test_directory(): + return evemu.tests.__path__[0] + + +class CustomTestRunner(unittest.TextTestRunner): + """ + This is only needed for Python 2.6 and lower. + """ + def _makeResult(self): + return evemu.testing.result.CustomTestResult( + self.stream, self.descriptions, self.verbosity) + + +def get_suite(loader, top_level_directory): + if hasattr(loader, "discover"): + # Python 2.7 + suite = loader.discover(top_level_directory) + else: + # Python 2.4, 2.5, 2.6 + names = [] + def _path_to_module(path): + # generate dotted names for file paths + path = path.replace(".py", "") + return path.replace("/", ".") + + # walk the directory + for dirpath, dirnames, filenames in os.walk(top_level_directory): + modules = [ + _path_to_module(os.path.join(dirpath, x)) for x in filenames + if x.startswith("test_") and x.endswith(".py")] + if not modules: + continue + names.extend(modules) + suite = loader.loadTestsFromNames(names) + return suite + + +def get_runner(): + try: + # Python 2.7 + runner = unittest.TextTestRunner( + verbosity=2, resultclass=evemu.testing.result.CustomTestResult) + except TypeError: + # Python 2.4, 2.5, 2.6 + runner = CustomTestRunner(verbosity=2) + return runner + + +def run_tests(): + loader = unittest.TestLoader() + suite = get_suite(loader, get_test_directory()) + return get_runner().run(suite) + + +if __name__ == "__main__": + import sys + result = run_tests() + if not result.wasSuccessful(): + sys.exit(1) diff --git a/app/simulator/evemu/testing/testcase.py b/app/simulator/evemu/testing/testcase.py new file mode 100644 index 0000000..ae77e61 --- /dev/null +++ b/app/simulator/evemu/testing/testcase.py @@ -0,0 +1,120 @@ +import os +import unittest + +import evemu.exception +from evemu import event_get_name, event_get_value, input_prop_get_value, input_prop_get_name + +def get_top_directory(): + import evemu + return evemu.__path__[0] + + +def skip(message): + try: + return unittest.skip(message) + except AttributeError: + def _skip(message): + def decorator(test_item): + def skip_wrapper(*args, **kwds): + raise evemu.exception.SkipTest(message) + return skip_wrapper + return decorator + return _skip(message) + + +class Non26BaseTestCase(unittest.TestCase): + """ + This is to provide methods that aren't in 2.6 and below, but are in 2.7 and + above. + """ + def __init__(self, *args, **kwds): + super(Non26BaseTestCase, self).__init__(*args, **kwds) + if not hasattr(unittest.TestCase, "assertIn"): + self.assertIn = self._assertIn26 + + def _assertIn26(self, member, container, msg=None): + """Just like self.assertTrue(a in b), but with a nicer default message.""" + if member not in container: + standardMsg = '%s not found in %s' % (repr(member), + repr(container)) + self.fail(msg or standardMsg) + + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + super(BaseTestCase, self).setUp() + basedir = get_top_directory() + self.data_dir = os.path.join(basedir, "..", "..", "data") + self.device = None + + def tearDown(self): + if self.device: + self.device.destroy() + super(BaseTestCase, self).tearDown() + + def get_device_file(self): + return os.path.join(self.data_dir, "ntrig-dell-xt2.prop") + + def get_events_file(self): + return os.path.join(self.data_dir, "ntrig-dell-xt2.event") + + _expected_abs_ntrig_dell_xt2 = { + # A: 00 0 9600 75 0 0 + evemu.event_get_value("EV_ABS", "ABS_X"): + {"min": 0, "max": 9600, "fuzz": 75, "flat": 0, "res": 0}, + # A: 01 0 7200 78 0 0 + evemu.event_get_value("EV_ABS", "ABS_Y"): + {"min": 0, "max": 7200, "fuzz": 78, "flat": 0, "res": 0}, + # A: 30 0 9600 200 0 0 + evemu.event_get_value("EV_ABS", "ABS_MT_TOUCH_MAJOR"): + {"min": 0, "max": 9600, "fuzz": 200, "flat": 0, "res": 0}, + # A: 31 0 7200 150 0 0 + evemu.event_get_value("EV_ABS", "ABS_MT_TOUCH_MINOR"): + {"min": 0, "max": 7200, "fuzz": 150, "flat": 0, "res": 0}, + # A: 34 0 1 0 0 0 + evemu.event_get_value("EV_ABS", "ABS_MT_ORIENTATION"): + {"min": 0, "max": 1, "fuzz": 0, "flat": 0, "res": 0}, + # A: 35 0 9600 75 0 0 + evemu.event_get_value("EV_ABS", "ABS_MT_POSITION_X"): + {"min": 0, "max": 9600, "fuzz": 75, "flat": 0, "res": 0}, + # A: 36 0 7200 78 0 0 + evemu.event_get_value("EV_ABS", "ABS_MT_POSITION_Y"): + {"min": 0, "max": 7200, "fuzz": 78, "flat": 0, "res": 0} + } + _expected_key_ntrig_dell_xt2 = { + evemu.event_get_value("EV_KEY", "BTN_TOUCH"): True + } + + def get_expected_abs(self, sub_key): + expected_items = self._expected_abs_ntrig_dell_xt2.items() + + absmax = event_get_value("EV_ABS", "ABS_MAX") + expected = dict.fromkeys(range(0, absmax + 1), 0) + expected.update((k, v[sub_key]) for (k, v) in expected_items) + + return expected + + def get_expected_absbits(self): + expected_keys = self._expected_abs_ntrig_dell_xt2.keys() + + absmax = event_get_value("EV_ABS", "ABS_MAX") + expected = dict.fromkeys(range(0, absmax + 1), False) + expected.update((k, True) for k in expected_keys) + + return expected + + def get_expected_keybits(self): + expected_keys = self._expected_key_ntrig_dell_xt2.keys() + keymax = event_get_value("EV_KEY", "KEY_MAX") + expected = dict.fromkeys(range(0, keymax + 1), False) + expected.update((k, True) for k in expected_keys) + + return expected + + def get_expected_propbits(self): + # no props for N-Trig-MultiTouch-Virtual-Device, so we + # return a dict with all keys on False + propmax = input_prop_get_value("INPUT_PROP_MAX") + keys = range(0, propmax + 1) + return dict.fromkeys(keys, False) diff --git a/app/simulator/evemu/tests/__init__.py b/app/simulator/evemu/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/simulator/evemu/tests/test_base.py b/app/simulator/evemu/tests/test_base.py new file mode 100644 index 0000000..78ac6be --- /dev/null +++ b/app/simulator/evemu/tests/test_base.py @@ -0,0 +1,56 @@ +import unittest + +import evemu.base +import evemu.testing.testcase + + +class EvEmuBaseTestCase(evemu.testing.testcase.BaseTestCase): + + def test_libc_found(self): + lib = evemu.base.LibC._load() + self.assertNotEqual(lib, None) + self.assertTrue(lib._name.startswith("libc")) + + def test_libc_static_from_load(self): + first = evemu.base.LibC._load() + self.assertNotEqual(first, None) + + second = evemu.base.LibC._load() + self.assertNotEqual(second, None) + + self.assertEqual(first, second) + + def test_libc_static_in_object(self): + first = evemu.base.LibC() + self.assertNotEqual(first, None) + + second = evemu.base.LibC() + self.assertNotEqual(second, None) + + self.assertEqual(first._loaded_lib, second._loaded_lib) + + def test_libevemu_found(self): + lib = evemu.base.LibEvemu._load() + self.assertNotEqual(lib, None) + self.assertTrue(lib._name.startswith("libevemu")) + + def test_libevemu_static_from_load(self): + first = evemu.base.LibEvemu._load() + self.assertNotEqual(first, None) + + second = evemu.base.LibEvemu._load() + self.assertNotEqual(second, None) + + self.assertEqual(first, second) + + def test_libevemu_static_in_object(self): + first = evemu.base.LibEvemu() + self.assertNotEqual(first, None) + + second = evemu.base.LibEvemu() + self.assertNotEqual(second, None) + + self.assertEqual(first._loaded_lib, second._loaded_lib) + +if __name__ == "__main__": + unittest.main() diff --git a/app/simulator/evemu/tests/test_device.py b/app/simulator/evemu/tests/test_device.py new file mode 100644 index 0000000..7d77f05 --- /dev/null +++ b/app/simulator/evemu/tests/test_device.py @@ -0,0 +1,331 @@ +from multiprocessing import Process, Queue, Event + +import re +import tempfile +import unittest + +import evemu +import evemu.testing.testcase + + +def record(recording_started, device_node, q): + """ + Runs the recorder in a separate process because the evemu API is a + blocking API. + """ + device = evemu.Device(device_node) + with tempfile.TemporaryFile(mode='rt') as event_file: + recording_started.set() + device.record(event_file, 1000) + event_file.flush() + event_file.seek(0) + outdata = event_file.readlines() + q.put(outdata) + +def strip_comments(data): + """ + Strip comments, superfluous whitespaces and empty lines from the data. + """ + stripped_data = [] + for line in data: + line = line.partition("#")[0].strip() + if len(line) > 0: + stripped_data.append(line) + return stripped_data + +def extract_events(data): + """ + Extract the actual event part from an event recording. + """ + return [line for line in data if line.startswith("E:")] + +class DeviceActionTestCase(evemu.testing.testcase.BaseTestCase): + """ + Verifies the high-level Device functions (create, describe, play, record). + """ + + def test_construct_from_dev_node_name(self): + """ + Verifies a Device can be constructed from an existing input device node + name. + """ + d = evemu.Device("/dev/input/event0") + + def test_construct_from_dev_node_file(self): + """ + Verifies a Device can be constructed from an existing input device node + file object. + """ + d = evemu.Device(open("/dev/input/event0")) + + def test_construct_from_prop_file_name(self): + """ + Verifies a device can be constructed from an evemu prop file name. + """ + d = evemu.Device(self.get_device_file()) + + def test_construct_from_prop_file_name_no_create(self): + """ + Verifies a device can be constructed from an evemu prop file name, + without creating a uinput device. + """ + d = evemu.Device(self.get_device_file(), create=False) + + def test_construct_from_prop_file_file(self): + """ + Verifies a device can be constructed from an evemu prop file file + object. + """ + d = evemu.Device(open(self.get_device_file())) + + def test_construct_from_prop_file_file_nocreate(self): + """ + Verifies a device can be constructed from an evemu prop file file + object, without creating a uinput device. + """ + d = evemu.Device(open(self.get_device_file()), create=False) + + def test_describe(self): + """ + Verifies that a device description can be correctly extracted from a + Device. + """ + # Get original description + with open(self.get_device_file()) as f: + data = strip_comments(f.readlines()) + + # Create a pseudo device with that description + d = evemu.Device(self.get_device_file()) + + # get the description to a temporary file + with tempfile.TemporaryFile(mode='rt') as t: + d.describe(t) + + # read in the temporary file and compare to the original + t.flush() + t.seek(0) + newdata = strip_comments(t.readlines()) + self.assertEquals(data, newdata) + + def test_play_and_record(self): + """ + Verifies that a Device and play back prerecorded events. + """ + device = evemu.Device(self.get_device_file()) + devnode = device.devnode + events_file = self.get_events_file() + # device.record() calls evemu_record() and is thus missing the + # description that the input file has + with open(events_file) as e: + indata = extract_events(strip_comments(e.readlines())) + + recording_started = Event() + q = Queue() + record_process = Process(target=record, + args=(recording_started, devnode, q)) + record_process.start() + recording_started.wait(100) + device.play(open(events_file)) + + outdata = strip_comments(q.get()) + record_process.join() + + self.assertEquals(len(indata), len(outdata)) + fuzz = re.compile("E: \d+\.\d+ (.*)") + for i in range(len(indata)): + lhs = fuzz.match(indata[i]) + self.assertTrue(lhs) + rhs = fuzz.match(outdata[i]) + self.assertTrue(rhs) + self.assertEquals(lhs.group(1), rhs.group(1)) + + def test_read_events(self): + device = evemu.Device(self.get_device_file(), create=False) + events_file = self.get_events_file() + with open(events_file) as ef: + events = [e for e in device.events(ef)] + self.assertTrue(len(events) > 1) + + def test_read_events_twice(self): + device = evemu.Device(self.get_device_file(), create=False) + events_file = self.get_events_file() + with open(events_file) as ef: + e1 = [(e.type, e.code, e.value) for e in device.events(ef)] + e2 = [(e.type, e.code, e.value) for e in device.events(ef)] + self.assertEquals(len(e1), len(e2)) + self.assertEquals(e1, e2) + +class DevicePropertiesTestCase(evemu.testing.testcase.BaseTestCase): + """ + Verifies the workings of the various device property accessors. + """ + + def setUp(self): + super(DevicePropertiesTestCase, self).setUp() + self._device = evemu.Device(self.get_device_file()) + + def tearDown(self): + del self._device + super(DevicePropertiesTestCase, self).tearDown() + + def test_version(self): + self.assertEqual(self._device.version, 0x10000) + + def test_name(self): + self.assertEqual(self._device.name, "N-Trig-MultiTouch-Virtual-Device") + + def test_id_bustype(self): + self.assertEqual(self._device.id_bustype, 3) + + def test_id_vendor(self): + self.assertEqual(self._device.id_vendor, 0x1b96) + + def test_id_product(self): + self.assertEqual(self._device.id_product, 1) + + def test_id_version(self): + self.assertEqual(self._device.id_version, 272) + + def test_get_abs_minimum(self): + absmax = evemu.event_get_value("EV_ABS", "ABS_MAX") + keys = range(0, absmax + 1) + results = dict((x, self._device.get_abs_minimum(x)) for x in keys) + + self.assertEqual(results, self.get_expected_abs("min")) + + def test_get_abs_maximum(self): + absmax = evemu.event_get_value("EV_ABS", "ABS_MAX") + keys = range(0, absmax + 1) + results = dict((x, self._device.get_abs_maximum(x)) for x in keys) + + self.assertEqual(results, self.get_expected_abs("max")) + + def test_get_abs_fuzz(self): + absmax = evemu.event_get_value("EV_ABS", "ABS_MAX") + keys = range(0, absmax + 1) + results = dict((x, self._device.get_abs_fuzz(x)) for x in keys) + + self.assertEqual(results, self.get_expected_abs("fuzz")) + + def test_get_abs_flat(self): + absmax = evemu.event_get_value("EV_ABS", "ABS_MAX") + keys = range(0, absmax + 1) + results = dict((x, self._device.get_abs_flat(x)) for x in keys) + + self.assertEqual(results, self.get_expected_abs("flat")) + + def test_get_abs_resolution(self): + absmax = evemu.event_get_value("EV_ABS", "ABS_MAX") + keys = range(0, absmax + 1) + results = dict((x, self._device.get_abs_resolution(x)) for x in keys) + + self.assertEqual(results, self.get_expected_abs("res")) + + def test_has_prop(self): + propmax = evemu.input_prop_get_value("INPUT_PROP_MAX") + keys = range(0, propmax + 1) + results = dict((x, self._device.has_prop(x)) for x in keys) + + self.assertEqual(results, self.get_expected_propbits()) + + def test_has_event_ev_abs(self): + absmax = evemu.event_get_value("EV_ABS", "ABS_MAX") + keys = range(0, absmax + 1) + results = dict((x, self._device.has_event("EV_ABS", x)) for x in keys) + + self.assertEqual(results, self.get_expected_absbits()) + + def test_has_event_ev_key(self): + keymax = evemu.event_get_value("EV_KEY", "KEY_MAX") + keys = range(0, keymax + 1) + results = dict((x, self._device.has_event("EV_KEY", x)) for x in keys) + + self.assertEqual(results, self.get_expected_keybits()) + + def test_event_names(self): + self.assertEqual(evemu.event_get_value("EV_SYN"), 0x00) + self.assertEqual(evemu.event_get_value("EV_KEY"), 0x01) + self.assertEqual(evemu.event_get_value("EV_ABS"), 0x03) + self.assertEqual(evemu.event_get_value("EV_FOO"), None) + self.assertEqual(evemu.event_get_value(1), 1) + self.assertEqual(evemu.event_get_value(100), None) + + self.assertEqual(evemu.event_get_value("EV_SYN", "SYN_REPORT"), 0x00) + self.assertEqual(evemu.event_get_value("EV_KEY", "KEY_Z"), 44) + self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_X"), 0x00) + self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_FOO"), None) + self.assertEqual(evemu.event_get_value(1), 1) + self.assertEqual(evemu.event_get_value(100), None) + + self.assertEqual(evemu.event_get_name(0x00), "EV_SYN") + self.assertEqual(evemu.event_get_name(0x01), "EV_KEY") + self.assertEqual(evemu.event_get_name(0x03), "EV_ABS") + self.assertEqual(evemu.event_get_name(0xFFFF), None) + self.assertEqual(evemu.event_get_name("foo"), None) + self.assertEqual(evemu.event_get_name("EV_SYN"), "EV_SYN") + + self.assertEqual(evemu.event_get_name("EV_SYN", 0x00), "SYN_REPORT") + self.assertEqual(evemu.event_get_name("EV_REL", 0x01), "REL_Y") + self.assertEqual(evemu.event_get_name("EV_ABS", 0x00), "ABS_X") + self.assertEqual(evemu.event_get_name("EV_ABS", 0xFFFF), None) + self.assertEqual(evemu.event_get_name("EV_ABS", "foo"), None) + self.assertEqual(evemu.event_get_name("EV_ABS", "ABS_X"), "ABS_X") + + self.assertEqual(evemu.event_get_name(None), None) + self.assertEqual(evemu.event_get_name(None, None), None) + + def test_prop_names(self): + self.assertEqual(evemu.input_prop_get_value("INPUT_PROP_POINTER"), 0x00) + self.assertEqual(evemu.input_prop_get_value("INPUT_PROP_DIRECT"), 0x01) + self.assertEqual(evemu.input_prop_get_value("INPUT_PROP_FOO"), None) + self.assertEqual(evemu.input_prop_get_value(1), 1) + self.assertEqual(evemu.input_prop_get_value(None), None) + + self.assertEqual(evemu.input_prop_get_name(0x00), "INPUT_PROP_POINTER") + self.assertEqual(evemu.input_prop_get_name(0x01), "INPUT_PROP_DIRECT") + self.assertEqual(evemu.input_prop_get_name(-1), None) + self.assertEqual(evemu.input_prop_get_name("foo"), None) + self.assertEqual(evemu.input_prop_get_name(None), None) + + def test_event_matching(self): + e = evemu.InputEvent(0, 0, 0x01, 44, 0) + self.assertTrue(e.matches("EV_KEY")) + self.assertTrue(e.matches("EV_KEY", "KEY_Z")) + self.assertTrue(e.matches(0x01)) + self.assertTrue(e.matches(0x01, 44)) + self.assertTrue(e.matches("EV_KEY", 44)) + self.assertTrue(e.matches(0x01, "KEY_Z")) + + for t in range(-1, 0xff): + for c in range(-1, 0xff): + if t != e.type or c != e.code: + self.assertFalse(e.matches(t, c)) + + e = evemu.InputEvent(0, 0, 0x02, 0x01, 0) + self.assertTrue(e.matches("EV_REL")) + self.assertTrue(e.matches("EV_REL", "REL_Y")) + self.assertTrue(e.matches(0x02)) + self.assertTrue(e.matches(0x02, 0x01)) + self.assertTrue(e.matches("EV_REL", 0x01)) + self.assertTrue(e.matches(0x02, "REL_Y")) + + for t in range(-1, 0xff): + for c in range(-1, 0xff): + if t != e.type or c != e.code: + self.assertFalse(e.matches(t, c)) + + e = evemu.InputEvent(0, 0, 0x03, 0x00, 0) + self.assertTrue(e.matches("EV_ABS")) + self.assertTrue(e.matches("EV_ABS", "ABS_X")) + self.assertTrue(e.matches(0x03)) + self.assertTrue(e.matches(0x03, 0x00)) + self.assertTrue(e.matches("EV_ABS", 0x00)) + self.assertTrue(e.matches(0x03, "ABS_X")) + + for t in range(-1, 0xff): + for c in range(-1, 0xff): + if t != e.type or c != e.code: + self.assertFalse(e.matches(t, c)) + +if __name__ == "__main__": + unittest.main() diff --git a/app/simulator/load_cell.device b/app/simulator/load_cell.device new file mode 100644 index 0000000..c1bc799 --- /dev/null +++ b/app/simulator/load_cell.device @@ -0,0 +1 @@ +8386793.031143608 \ No newline at end of file diff --git a/app/simulator/load_cell_simulator.py b/app/simulator/load_cell_simulator.py new file mode 100755 index 0000000..820d700 --- /dev/null +++ b/app/simulator/load_cell_simulator.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +""" +This script writes a file with values simulating a session of exercise. +""" + +import os +import sys +import evemu +import random +import math +import time +import argparse +import tempfile +import logging + +FORMAT = "[%(asctime)s %(levelname)s %(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s" +logging.basicConfig(level=logging.WARNING, format=FORMAT) +logger = logging.getLogger(__name__) + +# Values taken from the go app +LOAD_CELL_CALIBRATION_FACTOR = 0.0000628694 +LOAD_CELL_OFFSET = 8386793 + +class Main: + + def __init__(self, args=False): + self.args = args + + def _write(self, value): + """ + Write a new value to the file and seek the file to the beggining, + Convert the value, in kg, to the number expected in the file. + for the next write. + Wait the time between sampling + """ + raw_value = (value/LOAD_CELL_CALIBRATION_FACTOR) + LOAD_CELL_OFFSET + if self.args.dry_run: + print(f"value={value:.2f} raw_value={raw_value:0f}") + else: + self.args.file.write(str(raw_value)) + self.args.file.seek(0) + time.sleep(self.args.sampling/1000) + + def run(self): + print(sys._getframe().f_code.co_name) + + # Preparation + print(f"Preparation. duration={self.args.preparation_time}, force={self.args.preparation_force}, noise={self.args.preparation_force_noise}") + # Convert time to milliseconds to use integers, needed by "range" + for i in range(0, int(self.args.preparation_time*1000), self.args.sampling): + # Generate a value + value = self.args.preparation_force + (self.args.preparation_force_noise * random.uniform(-1,1)) + self._write(value) + + # Start (reaching the max force) + print(f"Start. duration={self.args.time_max_force/1000}, min_force={self.args.preparation_force}, max_force={self.args.max_force}") + for i in range(0, self.args.time_max_force, self.args.sampling): + # Generate values from the preparation_force to the max_force + value = self.args.preparation_force + ((self.args.max_force - self.args.preparation_force) * (i+self.args.sampling) / self.args.time_max_force) + self._write(value) + + # Hang + duration = self.args.duration*1000 - self.args.time_max_force + print(f"Hang. duration={duration/1000}, max_force={self.args.max_force}, min_force={self.args.max_force*(1-(self.args.force_loss/100))}") + for i in range(0, int(duration), self.args.sampling): + # Generate values from the max_force to max_force*(100-force_loss) + value = self.args.max_force - (self.args.max_force * (self.args.force_loss/100) * (i+self.args.sampling) / duration) + (self.args.force_noise * random.uniform(-1,1)) + self._write(value) + + # End (realeasing) + print(f"End. duration={self.args.time_min_force/1000}, max_force={self.args.max_force*(1-(self.args.force_loss/100))}, min_force={self.args.finish_force}") + for i in range(0, self.args.time_min_force, self.args.sampling): + # Generate values from max_force*(100-force_loss) to finish_force + value = self.args.max_force*(1-(self.args.force_loss/100)) - (((self.args.max_force*(1-(self.args.force_loss/100))) + self.args.finish_force) * (i+self.args.sampling) / self.args.time_min_force) + self._write(value) + + # Finish stage + print(f"Finish. duration={self.args.finish_time}, force={self.args.finish_force}, noise={self.args.finish_force_noise}") + for i in range(0, int(self.args.finish_time*1000), self.args.sampling): + value = self.args.finish_force + (self.args.finish_force_noise * random.uniform(-1,1)) + self._write(value) + +def parse_args(argv): + p = argparse.ArgumentParser(description='Load cell device simulator', formatter_class=argparse.ArgumentDefaultsHelpFormatter) + p.add_argument('--dry-run', dest='dry_run', action='store_true', + default=False, help="dry-run - print to stdout") + p.add_argument('-v', '--verbose', dest='verbose', action='count', default=0, + help='verbose output. specify twice for debug-level output.') + p.add_argument("-f", "--file", action="store", help="File to simulate the device.", type=argparse.FileType('w'), default='load_cell.device') + p.add_argument("-c", "--count", action="store", help="Number of hangs.", type=int, default=0) + p.add_argument("-d", "--duration", action="store", help="Duration of the hang (seconds)", type=float, default=10) + p.add_argument("-mf", "--max-force", action="store", help="Max force (kg)", type=float, default=80) + p.add_argument("-fl", "--force-loss", action="store", help="Force loos between the start and end of each hang (percentage 0-100)", type=float, default=20) + p.add_argument("-fn", "--force-noise", action="store", help="Max variation of force while haging (kg)", type=float, default=1) + p.add_argument("-tM", "--time-max-force", action="store", help="Time spent to reach the max force (ms)", type=int, default=200) + p.add_argument("-tm", "--time-min-force", action="store", help="Time spent to release the force of the hang (ms)", type=int, default=100) + p.add_argument("--sampling", action="store", help="Time between new values (ms)", type=int, default=20) + p.add_argument("-pt", "--preparation-time", action="store", help="Time spent before starting the hang (s)", type=float, default=3) + p.add_argument("-pf", "--preparation-force", action="store", help="Force done while preparing (kg)", type=float, default=5) + p.add_argument("-pfn", "--preparation-force-noise", action="store", help="Max variation of force while preparing (kg)", type=float, default=0.2) + p.add_argument("-ft", "--finish-time", action="store", help="Time spent after ending the hang (s)", type=float, default=3) + p.add_argument("-ff", "--finish-force", action="store", help="Force done while finishing (kg)", type=float, default=0) + p.add_argument("-ffn", "--finish-force-noise", action="store", help="Max variation of force while finishing (kg)", type=float, default=0.2) + + args = p.parse_args(argv) + + return args + + +if __name__ == "__main__": + args = parse_args(sys.argv[1:]) + if args.verbose > 1: + logger.setLevel(logging.DEBUG) + elif args.verbose > 0: + logger.setLevel(logging.INFO) + main = Main(args) + main.run() diff --git a/app/simulator/template.evemu b/app/simulator/template.evemu new file mode 100644 index 0000000..2ce64a9 --- /dev/null +++ b/app/simulator/template.evemu @@ -0,0 +1,1585 @@ +N: rotary@4 +I: 0019 0000 0000 0000 +P: 00 00 00 00 00 00 00 00 +B: 00 0b 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 02 01 00 00 00 00 00 00 00 +B: 03 00 00 00 00 00 00 00 00 +B: 04 00 00 00 00 00 00 00 00 +B: 05 00 00 00 00 00 00 00 00 +B: 11 00 00 00 00 00 00 00 00 +B: 12 00 00 00 00 00 00 00 00 +B: 14 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +E: 0.000000 0002 0000 0001 +E: 0.000000 0000 0000 0000 +E: 0.005000 0002 0000 0001 +E: 0.005000 0000 0000 0000 +E: 0.010000 0002 0000 0001 +E: 0.010000 0000 0000 0000 +E: 0.015000 0002 0000 0001 +E: 0.015000 0000 0000 0000 +E: 0.020000 0002 0000 0001 +E: 0.020000 0000 0000 0000 +E: 0.025000 0002 0000 0001 +E: 0.025000 0000 0000 0000 +E: 0.030000 0002 0000 0001 +E: 0.030000 0000 0000 0000 +E: 0.035000 0002 0000 0001 +E: 0.035000 0000 0000 0000 +E: 0.040000 0002 0000 0001 +E: 0.040000 0000 0000 0000 +E: 0.045000 0002 0000 0001 +E: 0.045000 0000 0000 0000 +E: 0.050000 0002 0000 0001 +E: 0.050000 0000 0000 0000 +E: 0.055000 0002 0000 0001 +E: 0.055000 0000 0000 0000 +E: 0.060000 0002 0000 0001 +E: 0.060000 0000 0000 0000 +E: 0.065000 0002 0000 0001 +E: 0.065000 0000 0000 0000 +E: 0.070000 0002 0000 0001 +E: 0.070000 0000 0000 0000 +E: 0.075000 0002 0000 0001 +E: 0.075000 0000 0000 0000 +E: 0.080000 0002 0000 0001 +E: 0.080000 0000 0000 0000 +E: 0.085000 0002 0000 0001 +E: 0.085000 0000 0000 0000 +E: 0.090000 0002 0000 0001 +E: 0.090000 0000 0000 0000 +E: 0.095000 0002 0000 0001 +E: 0.095000 0000 0000 0000 +E: 0.100000 0002 0000 0001 +E: 0.100000 0000 0000 0000 +E: 0.105000 0002 0000 0001 +E: 0.105000 0000 0000 0000 +E: 0.110000 0002 0000 0001 +E: 0.110000 0000 0000 0000 +E: 0.115000 0002 0000 0001 +E: 0.115000 0000 0000 0000 +E: 0.120000 0002 0000 0001 +E: 0.120000 0000 0000 0000 +E: 0.125000 0002 0000 0001 +E: 0.125000 0000 0000 0000 +E: 0.130000 0002 0000 0001 +E: 0.130000 0000 0000 0000 +E: 0.135000 0002 0000 0001 +E: 0.135000 0000 0000 0000 +E: 0.140000 0002 0000 0001 +E: 0.140000 0000 0000 0000 +E: 0.145000 0002 0000 0001 +E: 0.145000 0000 0000 0000 +E: 0.150000 0002 0000 0001 +E: 0.150000 0000 0000 0000 +E: 0.155000 0002 0000 0001 +E: 0.155000 0000 0000 0000 +E: 0.160000 0002 0000 0001 +E: 0.160000 0000 0000 0000 +E: 0.165000 0002 0000 0001 +E: 0.165000 0000 0000 0000 +E: 0.170000 0002 0000 0001 +E: 0.170000 0000 0000 0000 +E: 0.175000 0002 0000 0001 +E: 0.175000 0000 0000 0000 +E: 0.180000 0002 0000 0001 +E: 0.180000 0000 0000 0000 +E: 0.185000 0002 0000 0001 +E: 0.185000 0000 0000 0000 +E: 0.190000 0002 0000 0001 +E: 0.190000 0000 0000 0000 +E: 0.195000 0002 0000 0001 +E: 0.195000 0000 0000 0000 +E: 0.200000 0002 0000 0001 +E: 0.200000 0000 0000 0000 +E: 0.205000 0002 0000 0001 +E: 0.205000 0000 0000 0000 +E: 0.210000 0002 0000 0001 +E: 0.210000 0000 0000 0000 +E: 0.215000 0002 0000 0001 +E: 0.215000 0000 0000 0000 +E: 0.220000 0002 0000 0001 +E: 0.220000 0000 0000 0000 +E: 0.225000 0002 0000 0001 +E: 0.225000 0000 0000 0000 +E: 0.230000 0002 0000 0001 +E: 0.230000 0000 0000 0000 +E: 0.235000 0002 0000 0001 +E: 0.235000 0000 0000 0000 +E: 0.240000 0002 0000 0001 +E: 0.240000 0000 0000 0000 +E: 0.245000 0002 0000 0001 +E: 0.245000 0000 0000 0000 +E: 0.250000 0002 0000 0001 +E: 0.250000 0000 0000 0000 +E: 0.255000 0002 0000 0001 +E: 0.255000 0000 0000 0000 +E: 0.260000 0002 0000 0001 +E: 0.260000 0000 0000 0000 +E: 0.265000 0002 0000 0001 +E: 0.265000 0000 0000 0000 +E: 0.270000 0002 0000 0001 +E: 0.270000 0000 0000 0000 +E: 0.275000 0002 0000 0001 +E: 0.275000 0000 0000 0000 +E: 0.280000 0002 0000 0001 +E: 0.280000 0000 0000 0000 +E: 0.285000 0002 0000 0001 +E: 0.285000 0000 0000 0000 +E: 0.290000 0002 0000 0001 +E: 0.290000 0000 0000 0000 +E: 0.295000 0002 0000 0001 +E: 0.295000 0000 0000 0000 +E: 0.300000 0002 0000 0001 +E: 0.300000 0000 0000 0000 +E: 0.305000 0002 0000 0001 +E: 0.305000 0000 0000 0000 +E: 0.310000 0002 0000 0001 +E: 0.310000 0000 0000 0000 +E: 0.315000 0002 0000 0001 +E: 0.315000 0000 0000 0000 +E: 0.320000 0002 0000 0001 +E: 0.320000 0000 0000 0000 +E: 0.325000 0002 0000 0001 +E: 0.325000 0000 0000 0000 +E: 0.330000 0002 0000 0001 +E: 0.330000 0000 0000 0000 +E: 0.335000 0002 0000 0001 +E: 0.335000 0000 0000 0000 +E: 0.340000 0002 0000 0001 +E: 0.340000 0000 0000 0000 +E: 0.345000 0002 0000 0001 +E: 0.345000 0000 0000 0000 +E: 0.350000 0002 0000 0001 +E: 0.350000 0000 0000 0000 +E: 0.355000 0002 0000 0001 +E: 0.355000 0000 0000 0000 +E: 0.360000 0002 0000 0001 +E: 0.360000 0000 0000 0000 +E: 0.365000 0002 0000 0001 +E: 0.365000 0000 0000 0000 +E: 0.370000 0002 0000 0001 +E: 0.370000 0000 0000 0000 +E: 0.375000 0002 0000 0001 +E: 0.375000 0000 0000 0000 +E: 0.380000 0002 0000 0001 +E: 0.380000 0000 0000 0000 +E: 0.385000 0002 0000 0001 +E: 0.385000 0000 0000 0000 +E: 0.390000 0002 0000 0001 +E: 0.390000 0000 0000 0000 +E: 0.395000 0002 0000 0001 +E: 0.395000 0000 0000 0000 +E: 0.400000 0002 0000 0001 +E: 0.400000 0000 0000 0000 +E: 0.405000 0002 0000 0001 +E: 0.405000 0000 0000 0000 +E: 0.410000 0002 0000 0001 +E: 0.410000 0000 0000 0000 +E: 0.415000 0002 0000 0001 +E: 0.415000 0000 0000 0000 +E: 0.420000 0002 0000 0001 +E: 0.420000 0000 0000 0000 +E: 0.425000 0002 0000 0001 +E: 0.425000 0000 0000 0000 +E: 0.430000 0002 0000 0001 +E: 0.430000 0000 0000 0000 +E: 0.435000 0002 0000 0001 +E: 0.435000 0000 0000 0000 +E: 0.440000 0002 0000 0001 +E: 0.440000 0000 0000 0000 +E: 0.445000 0002 0000 0001 +E: 0.445000 0000 0000 0000 +E: 0.450000 0002 0000 0001 +E: 0.450000 0000 0000 0000 +E: 0.455000 0002 0000 0001 +E: 0.455000 0000 0000 0000 +E: 0.460000 0002 0000 0001 +E: 0.460000 0000 0000 0000 +E: 0.465000 0002 0000 0001 +E: 0.465000 0000 0000 0000 +E: 0.470000 0002 0000 0001 +E: 0.470000 0000 0000 0000 +E: 0.475000 0002 0000 0001 +E: 0.475000 0000 0000 0000 +E: 0.480000 0002 0000 0001 +E: 0.480000 0000 0000 0000 +E: 0.485000 0002 0000 0001 +E: 0.485000 0000 0000 0000 +E: 0.490000 0002 0000 0001 +E: 0.490000 0000 0000 0000 +E: 0.495000 0002 0000 0001 +E: 0.495000 0000 0000 0000 +E: 0.500000 0002 0000 0001 +E: 0.500000 0000 0000 0000 +E: 0.505000 0002 0000 0001 +E: 0.505000 0000 0000 0000 +E: 0.510000 0002 0000 0001 +E: 0.510000 0000 0000 0000 +E: 0.515000 0002 0000 0001 +E: 0.515000 0000 0000 0000 +E: 0.520000 0002 0000 0001 +E: 0.520000 0000 0000 0000 +E: 0.525000 0002 0000 0001 +E: 0.525000 0000 0000 0000 +E: 0.530000 0002 0000 0001 +E: 0.530000 0000 0000 0000 +E: 0.535000 0002 0000 0001 +E: 0.535000 0000 0000 0000 +E: 0.540000 0002 0000 0001 +E: 0.540000 0000 0000 0000 +E: 0.545000 0002 0000 0001 +E: 0.545000 0000 0000 0000 +E: 0.550000 0002 0000 0001 +E: 0.550000 0000 0000 0000 +E: 0.555000 0002 0000 0001 +E: 0.555000 0000 0000 0000 +E: 0.560000 0002 0000 0001 +E: 0.560000 0000 0000 0000 +E: 0.565000 0002 0000 0001 +E: 0.565000 0000 0000 0000 +E: 0.570000 0002 0000 0001 +E: 0.570000 0000 0000 0000 +E: 0.575000 0002 0000 0001 +E: 0.575000 0000 0000 0000 +E: 0.580000 0002 0000 0001 +E: 0.580000 0000 0000 0000 +E: 0.585000 0002 0000 0001 +E: 0.585000 0000 0000 0000 +E: 0.590000 0002 0000 0001 +E: 0.590000 0000 0000 0000 +E: 0.595000 0002 0000 0001 +E: 0.595000 0000 0000 0000 +E: 0.600000 0002 0000 0001 +E: 0.600000 0000 0000 0000 +E: 0.605000 0002 0000 0001 +E: 0.605000 0000 0000 0000 +E: 0.610000 0002 0000 0001 +E: 0.610000 0000 0000 0000 +E: 0.615000 0002 0000 0001 +E: 0.615000 0000 0000 0000 +E: 0.620000 0002 0000 0001 +E: 0.620000 0000 0000 0000 +E: 0.625000 0002 0000 0001 +E: 0.625000 0000 0000 0000 +E: 0.630000 0002 0000 0001 +E: 0.630000 0000 0000 0000 +E: 0.635000 0002 0000 0001 +E: 0.635000 0000 0000 0000 +E: 0.640000 0002 0000 0001 +E: 0.640000 0000 0000 0000 +E: 0.645000 0002 0000 0001 +E: 0.645000 0000 0000 0000 +E: 0.650000 0002 0000 -001 +E: 0.650000 0000 0000 0000 +E: 0.655000 0002 0000 -001 +E: 0.655000 0000 0000 0000 +E: 0.660000 0002 0000 -001 +E: 0.660000 0000 0000 0000 +E: 0.665000 0002 0000 -001 +E: 0.665000 0000 0000 0000 +E: 0.670000 0002 0000 -001 +E: 0.670000 0000 0000 0000 +E: 0.675000 0002 0000 -001 +E: 0.675000 0000 0000 0000 +E: 0.680000 0002 0000 -001 +E: 0.680000 0000 0000 0000 +E: 0.685000 0002 0000 -001 +E: 0.685000 0000 0000 0000 +E: 0.690000 0002 0000 -001 +E: 0.690000 0000 0000 0000 +E: 0.695000 0002 0000 -001 +E: 0.695000 0000 0000 0000 +E: 0.700000 0002 0000 -001 +E: 0.700000 0000 0000 0000 +E: 0.705000 0002 0000 -001 +E: 0.705000 0000 0000 0000 +E: 0.710000 0002 0000 -001 +E: 0.710000 0000 0000 0000 +E: 0.715000 0002 0000 -001 +E: 0.715000 0000 0000 0000 +E: 0.720000 0002 0000 -001 +E: 0.720000 0000 0000 0000 +E: 0.725000 0002 0000 -001 +E: 0.725000 0000 0000 0000 +E: 0.730000 0002 0000 -001 +E: 0.730000 0000 0000 0000 +E: 0.735000 0002 0000 -001 +E: 0.735000 0000 0000 0000 +E: 0.740000 0002 0000 -001 +E: 0.740000 0000 0000 0000 +E: 0.745000 0002 0000 -001 +E: 0.745000 0000 0000 0000 +E: 0.750000 0002 0000 -001 +E: 0.750000 0000 0000 0000 +E: 0.755000 0002 0000 -001 +E: 0.755000 0000 0000 0000 +E: 0.760000 0002 0000 -001 +E: 0.760000 0000 0000 0000 +E: 0.765000 0002 0000 -001 +E: 0.765000 0000 0000 0000 +E: 0.770000 0002 0000 -001 +E: 0.770000 0000 0000 0000 +E: 0.775000 0002 0000 -001 +E: 0.775000 0000 0000 0000 +E: 0.780000 0002 0000 -001 +E: 0.780000 0000 0000 0000 +E: 0.785000 0002 0000 -001 +E: 0.785000 0000 0000 0000 +E: 0.790000 0002 0000 -001 +E: 0.790000 0000 0000 0000 +E: 0.795000 0002 0000 -001 +E: 0.795000 0000 0000 0000 +E: 0.800000 0002 0000 -001 +E: 0.800000 0000 0000 0000 +E: 0.805000 0002 0000 -001 +E: 0.805000 0000 0000 0000 +E: 0.810000 0002 0000 -001 +E: 0.810000 0000 0000 0000 +E: 0.815000 0002 0000 -001 +E: 0.815000 0000 0000 0000 +E: 0.820000 0002 0000 -001 +E: 0.820000 0000 0000 0000 +E: 0.825000 0002 0000 -001 +E: 0.825000 0000 0000 0000 +E: 0.830000 0002 0000 -001 +E: 0.830000 0000 0000 0000 +E: 0.835000 0002 0000 -001 +E: 0.835000 0000 0000 0000 +E: 0.840000 0002 0000 -001 +E: 0.840000 0000 0000 0000 +E: 0.845000 0002 0000 -001 +E: 0.845000 0000 0000 0000 +E: 0.850000 0002 0000 -001 +E: 0.850000 0000 0000 0000 +E: 0.855000 0002 0000 -001 +E: 0.855000 0000 0000 0000 +E: 0.860000 0002 0000 -001 +E: 0.860000 0000 0000 0000 +E: 0.865000 0002 0000 -001 +E: 0.865000 0000 0000 0000 +E: 0.870000 0002 0000 -001 +E: 0.870000 0000 0000 0000 +E: 0.875000 0002 0000 -001 +E: 0.875000 0000 0000 0000 +E: 0.880000 0002 0000 -001 +E: 0.880000 0000 0000 0000 +E: 0.885000 0002 0000 -001 +E: 0.885000 0000 0000 0000 +E: 0.890000 0002 0000 -001 +E: 0.890000 0000 0000 0000 +E: 0.895000 0002 0000 -001 +E: 0.895000 0000 0000 0000 +E: 0.900000 0002 0000 -001 +E: 0.900000 0000 0000 0000 +E: 0.905000 0002 0000 -001 +E: 0.905000 0000 0000 0000 +E: 0.910000 0002 0000 -001 +E: 0.910000 0000 0000 0000 +E: 0.915000 0002 0000 -001 +E: 0.915000 0000 0000 0000 +E: 0.920000 0002 0000 -001 +E: 0.920000 0000 0000 0000 +E: 0.925000 0002 0000 -001 +E: 0.925000 0000 0000 0000 +E: 0.930000 0002 0000 -001 +E: 0.930000 0000 0000 0000 +E: 0.935000 0002 0000 -001 +E: 0.935000 0000 0000 0000 +E: 0.940000 0002 0000 -001 +E: 0.940000 0000 0000 0000 +E: 0.945000 0002 0000 -001 +E: 0.945000 0000 0000 0000 +E: 0.950000 0002 0000 -001 +E: 0.950000 0000 0000 0000 +E: 0.955000 0002 0000 -001 +E: 0.955000 0000 0000 0000 +E: 0.960000 0002 0000 -001 +E: 0.960000 0000 0000 0000 +E: 0.965000 0002 0000 -001 +E: 0.965000 0000 0000 0000 +E: 0.970000 0002 0000 -001 +E: 0.970000 0000 0000 0000 +E: 0.975000 0002 0000 -001 +E: 0.975000 0000 0000 0000 +E: 0.980000 0002 0000 -001 +E: 0.980000 0000 0000 0000 +E: 0.985000 0002 0000 -001 +E: 0.985000 0000 0000 0000 +E: 0.990000 0002 0000 -001 +E: 0.990000 0000 0000 0000 +E: 0.995000 0002 0000 -001 +E: 0.995000 0000 0000 0000 +E: 1.000000 0002 0000 -001 +E: 1.000000 0000 0000 0000 +E: 1.005000 0002 0000 -001 +E: 1.005000 0000 0000 0000 +E: 1.010000 0002 0000 -001 +E: 1.010000 0000 0000 0000 +E: 1.015000 0002 0000 -001 +E: 1.015000 0000 0000 0000 +E: 1.020000 0002 0000 -001 +E: 1.020000 0000 0000 0000 +E: 1.025000 0002 0000 -001 +E: 1.025000 0000 0000 0000 +E: 1.030000 0002 0000 -001 +E: 1.030000 0000 0000 0000 +E: 1.035000 0002 0000 -001 +E: 1.035000 0000 0000 0000 +E: 1.040000 0002 0000 -001 +E: 1.040000 0000 0000 0000 +E: 1.045000 0002 0000 -001 +E: 1.045000 0000 0000 0000 +E: 1.050000 0002 0000 -001 +E: 1.050000 0000 0000 0000 +E: 1.055000 0002 0000 -001 +E: 1.055000 0000 0000 0000 +E: 1.060000 0002 0000 -001 +E: 1.060000 0000 0000 0000 +E: 1.065000 0002 0000 -001 +E: 1.065000 0000 0000 0000 +E: 1.070000 0002 0000 -001 +E: 1.070000 0000 0000 0000 +E: 1.075000 0002 0000 -001 +E: 1.075000 0000 0000 0000 +E: 1.080000 0002 0000 -001 +E: 1.080000 0000 0000 0000 +E: 1.085000 0002 0000 -001 +E: 1.085000 0000 0000 0000 +E: 1.090000 0002 0000 -001 +E: 1.090000 0000 0000 0000 +E: 1.095000 0002 0000 -001 +E: 1.095000 0000 0000 0000 +E: 1.100000 0002 0000 -001 +E: 1.100000 0000 0000 0000 +E: 1.105000 0002 0000 -001 +E: 1.105000 0000 0000 0000 +E: 1.110000 0002 0000 -001 +E: 1.110000 0000 0000 0000 +E: 1.115000 0002 0000 -001 +E: 1.115000 0000 0000 0000 +E: 1.120000 0002 0000 -001 +E: 1.120000 0000 0000 0000 +E: 1.125000 0002 0000 -001 +E: 1.125000 0000 0000 0000 +E: 1.130000 0002 0000 -001 +E: 1.130000 0000 0000 0000 +E: 1.135000 0002 0000 -001 +E: 1.135000 0000 0000 0000 +E: 1.140000 0002 0000 -001 +E: 1.140000 0000 0000 0000 +E: 1.145000 0002 0000 -001 +E: 1.145000 0000 0000 0000 +E: 1.150000 0002 0000 -001 +E: 1.150000 0000 0000 0000 +E: 1.155000 0002 0000 -001 +E: 1.155000 0000 0000 0000 +E: 1.160000 0002 0000 -001 +E: 1.160000 0000 0000 0000 +E: 1.165000 0002 0000 -001 +E: 1.165000 0000 0000 0000 +E: 1.170000 0002 0000 -001 +E: 1.170000 0000 0000 0000 +E: 1.175000 0002 0000 -001 +E: 1.175000 0000 0000 0000 +E: 1.180000 0002 0000 -001 +E: 1.180000 0000 0000 0000 +E: 1.185000 0002 0000 -001 +E: 1.185000 0000 0000 0000 +E: 1.190000 0002 0000 -001 +E: 1.190000 0000 0000 0000 +E: 1.195000 0002 0000 -001 +E: 1.195000 0000 0000 0000 +E: 1.200000 0002 0000 -001 +E: 1.200000 0000 0000 0000 +E: 1.205000 0002 0000 -001 +E: 1.205000 0000 0000 0000 +E: 1.210000 0002 0000 -001 +E: 1.210000 0000 0000 0000 +E: 1.215000 0002 0000 -001 +E: 1.215000 0000 0000 0000 +E: 1.220000 0002 0000 -001 +E: 1.220000 0000 0000 0000 +E: 1.225000 0002 0000 -001 +E: 1.225000 0000 0000 0000 +E: 1.230000 0002 0000 -001 +E: 1.230000 0000 0000 0000 +E: 1.235000 0002 0000 -001 +E: 1.235000 0000 0000 0000 +E: 1.240000 0002 0000 -001 +E: 1.240000 0000 0000 0000 +E: 1.245000 0002 0000 -001 +E: 1.245000 0000 0000 0000 +E: 1.250000 0002 0000 -001 +E: 1.250000 0000 0000 0000 +E: 1.255000 0002 0000 -001 +E: 1.255000 0000 0000 0000 +E: 1.260000 0002 0000 -001 +E: 1.260000 0000 0000 0000 +E: 1.265000 0002 0000 -001 +E: 1.265000 0000 0000 0000 +E: 1.270000 0002 0000 -001 +E: 1.270000 0000 0000 0000 +E: 1.275000 0002 0000 -001 +E: 1.275000 0000 0000 0000 +E: 1.280000 0002 0000 -001 +E: 1.280000 0000 0000 0000 +E: 1.285000 0002 0000 -001 +E: 1.285000 0000 0000 0000 +E: 1.290000 0002 0000 -001 +E: 1.290000 0000 0000 0000 +E: 1.295000 0002 0000 -001 +E: 1.295000 0000 0000 0000 +E: 1.295000 0002 0000 0001 +E: 1.295000 0000 0000 0000 +E: 1.300000 0002 0000 0001 +E: 1.300000 0000 0000 0000 +E: 1.305000 0002 0000 0001 +E: 1.305000 0000 0000 0000 +E: 1.310000 0002 0000 0001 +E: 1.310000 0000 0000 0000 +E: 1.315000 0002 0000 0001 +E: 1.315000 0000 0000 0000 +E: 1.320000 0002 0000 0001 +E: 1.320000 0000 0000 0000 +E: 1.325000 0002 0000 0001 +E: 1.325000 0000 0000 0000 +E: 1.330000 0002 0000 0001 +E: 1.330000 0000 0000 0000 +E: 1.335000 0002 0000 0001 +E: 1.335000 0000 0000 0000 +E: 1.340000 0002 0000 0001 +E: 1.340000 0000 0000 0000 +E: 1.345000 0002 0000 0001 +E: 1.345000 0000 0000 0000 +E: 1.350000 0002 0000 0001 +E: 1.350000 0000 0000 0000 +E: 1.355000 0002 0000 0001 +E: 1.355000 0000 0000 0000 +E: 1.360000 0002 0000 0001 +E: 1.360000 0000 0000 0000 +E: 1.365000 0002 0000 0001 +E: 1.365000 0000 0000 0000 +E: 1.370000 0002 0000 0001 +E: 1.370000 0000 0000 0000 +E: 1.375000 0002 0000 0001 +E: 1.375000 0000 0000 0000 +E: 1.380000 0002 0000 0001 +E: 1.380000 0000 0000 0000 +E: 1.385000 0002 0000 0001 +E: 1.385000 0000 0000 0000 +E: 1.390000 0002 0000 0001 +E: 1.390000 0000 0000 0000 +E: 1.395000 0002 0000 0001 +E: 1.395000 0000 0000 0000 +E: 1.400000 0002 0000 0001 +E: 1.400000 0000 0000 0000 +E: 1.405000 0002 0000 0001 +E: 1.405000 0000 0000 0000 +E: 1.410000 0002 0000 0001 +E: 1.410000 0000 0000 0000 +E: 1.415000 0002 0000 0001 +E: 1.415000 0000 0000 0000 +E: 1.420000 0002 0000 0001 +E: 1.420000 0000 0000 0000 +E: 1.425000 0002 0000 0001 +E: 1.425000 0000 0000 0000 +E: 1.430000 0002 0000 0001 +E: 1.430000 0000 0000 0000 +E: 1.435000 0002 0000 0001 +E: 1.435000 0000 0000 0000 +E: 1.440000 0002 0000 0001 +E: 1.440000 0000 0000 0000 +E: 1.445000 0002 0000 0001 +E: 1.445000 0000 0000 0000 +E: 1.450000 0002 0000 0001 +E: 1.450000 0000 0000 0000 +E: 1.455000 0002 0000 0001 +E: 1.455000 0000 0000 0000 +E: 1.460000 0002 0000 0001 +E: 1.460000 0000 0000 0000 +E: 1.465000 0002 0000 0001 +E: 1.465000 0000 0000 0000 +E: 1.470000 0002 0000 0001 +E: 1.470000 0000 0000 0000 +E: 1.475000 0002 0000 0001 +E: 1.475000 0000 0000 0000 +E: 1.480000 0002 0000 0001 +E: 1.480000 0000 0000 0000 +E: 1.485000 0002 0000 0001 +E: 1.485000 0000 0000 0000 +E: 1.490000 0002 0000 0001 +E: 1.490000 0000 0000 0000 +E: 1.495000 0002 0000 0001 +E: 1.495000 0000 0000 0000 +E: 1.500000 0002 0000 0001 +E: 1.500000 0000 0000 0000 +E: 1.505000 0002 0000 0001 +E: 1.505000 0000 0000 0000 +E: 1.510000 0002 0000 0001 +E: 1.510000 0000 0000 0000 +E: 1.515000 0002 0000 0001 +E: 1.515000 0000 0000 0000 +E: 1.520000 0002 0000 0001 +E: 1.520000 0000 0000 0000 +E: 1.525000 0002 0000 0001 +E: 1.525000 0000 0000 0000 +E: 1.530000 0002 0000 0001 +E: 1.530000 0000 0000 0000 +E: 1.535000 0002 0000 0001 +E: 1.535000 0000 0000 0000 +E: 1.540000 0002 0000 0001 +E: 1.540000 0000 0000 0000 +E: 1.545000 0002 0000 0001 +E: 1.545000 0000 0000 0000 +E: 1.550000 0002 0000 0001 +E: 1.550000 0000 0000 0000 +E: 1.555000 0002 0000 0001 +E: 1.555000 0000 0000 0000 +E: 1.560000 0002 0000 0001 +E: 1.560000 0000 0000 0000 +E: 1.565000 0002 0000 0001 +E: 1.565000 0000 0000 0000 +E: 1.570000 0002 0000 0001 +E: 1.570000 0000 0000 0000 +E: 1.575000 0002 0000 0001 +E: 1.575000 0000 0000 0000 +E: 1.580000 0002 0000 0001 +E: 1.580000 0000 0000 0000 +E: 1.585000 0002 0000 0001 +E: 1.585000 0000 0000 0000 +E: 1.590000 0002 0000 0001 +E: 1.590000 0000 0000 0000 +E: 1.595000 0002 0000 0001 +E: 1.595000 0000 0000 0000 +E: 1.600000 0002 0000 0001 +E: 1.600000 0000 0000 0000 +E: 1.605000 0002 0000 0001 +E: 1.605000 0000 0000 0000 +E: 1.610000 0002 0000 0001 +E: 1.610000 0000 0000 0000 +E: 1.615000 0002 0000 0001 +E: 1.615000 0000 0000 0000 +E: 1.620000 0002 0000 0001 +E: 1.620000 0000 0000 0000 +E: 1.625000 0002 0000 0001 +E: 1.625000 0000 0000 0000 +E: 1.630000 0002 0000 0001 +E: 1.630000 0000 0000 0000 +E: 1.635000 0002 0000 0001 +E: 1.635000 0000 0000 0000 +E: 1.640000 0002 0000 0001 +E: 1.640000 0000 0000 0000 +E: 1.645000 0002 0000 0001 +E: 1.645000 0000 0000 0000 +E: 1.650000 0002 0000 0001 +E: 1.650000 0000 0000 0000 +E: 1.655000 0002 0000 0001 +E: 1.655000 0000 0000 0000 +E: 1.660000 0002 0000 0001 +E: 1.660000 0000 0000 0000 +E: 1.665000 0002 0000 0001 +E: 1.665000 0000 0000 0000 +E: 1.670000 0002 0000 0001 +E: 1.670000 0000 0000 0000 +E: 1.675000 0002 0000 0001 +E: 1.675000 0000 0000 0000 +E: 1.680000 0002 0000 0001 +E: 1.680000 0000 0000 0000 +E: 1.685000 0002 0000 0001 +E: 1.685000 0000 0000 0000 +E: 1.690000 0002 0000 0001 +E: 1.690000 0000 0000 0000 +E: 1.695000 0002 0000 0001 +E: 1.695000 0000 0000 0000 +E: 1.700000 0002 0000 0001 +E: 1.700000 0000 0000 0000 +E: 1.705000 0002 0000 0001 +E: 1.705000 0000 0000 0000 +E: 1.710000 0002 0000 0001 +E: 1.710000 0000 0000 0000 +E: 1.715000 0002 0000 0001 +E: 1.715000 0000 0000 0000 +E: 1.720000 0002 0000 0001 +E: 1.720000 0000 0000 0000 +E: 1.725000 0002 0000 0001 +E: 1.725000 0000 0000 0000 +E: 1.730000 0002 0000 0001 +E: 1.730000 0000 0000 0000 +E: 1.735000 0002 0000 0001 +E: 1.735000 0000 0000 0000 +E: 1.740000 0002 0000 0001 +E: 1.740000 0000 0000 0000 +E: 1.745000 0002 0000 0001 +E: 1.745000 0000 0000 0000 +E: 1.750000 0002 0000 0001 +E: 1.750000 0000 0000 0000 +E: 1.755000 0002 0000 0001 +E: 1.755000 0000 0000 0000 +E: 1.760000 0002 0000 0001 +E: 1.760000 0000 0000 0000 +E: 1.765000 0002 0000 0001 +E: 1.765000 0000 0000 0000 +E: 1.770000 0002 0000 0001 +E: 1.770000 0000 0000 0000 +E: 1.775000 0002 0000 0001 +E: 1.775000 0000 0000 0000 +E: 1.780000 0002 0000 0001 +E: 1.780000 0000 0000 0000 +E: 1.785000 0002 0000 0001 +E: 1.785000 0000 0000 0000 +E: 1.790000 0002 0000 0001 +E: 1.790000 0000 0000 0000 +E: 1.795000 0002 0000 0001 +E: 1.795000 0000 0000 0000 +E: 1.800000 0002 0000 0001 +E: 1.800000 0000 0000 0000 +E: 1.805000 0002 0000 0001 +E: 1.805000 0000 0000 0000 +E: 1.810000 0002 0000 0001 +E: 1.810000 0000 0000 0000 +E: 1.815000 0002 0000 0001 +E: 1.815000 0000 0000 0000 +E: 1.820000 0002 0000 0001 +E: 1.820000 0000 0000 0000 +E: 1.825000 0002 0000 0001 +E: 1.825000 0000 0000 0000 +E: 1.830000 0002 0000 0001 +E: 1.830000 0000 0000 0000 +E: 1.835000 0002 0000 0001 +E: 1.835000 0000 0000 0000 +E: 1.840000 0002 0000 0001 +E: 1.840000 0000 0000 0000 +E: 1.845000 0002 0000 0001 +E: 1.845000 0000 0000 0000 +E: 1.850000 0002 0000 0001 +E: 1.850000 0000 0000 0000 +E: 1.855000 0002 0000 0001 +E: 1.855000 0000 0000 0000 +E: 1.860000 0002 0000 0001 +E: 1.860000 0000 0000 0000 +E: 1.865000 0002 0000 0001 +E: 1.865000 0000 0000 0000 +E: 1.870000 0002 0000 0001 +E: 1.870000 0000 0000 0000 +E: 1.875000 0002 0000 0001 +E: 1.875000 0000 0000 0000 +E: 1.880000 0002 0000 0001 +E: 1.880000 0000 0000 0000 +E: 1.885000 0002 0000 0001 +E: 1.885000 0000 0000 0000 +E: 1.890000 0002 0000 0001 +E: 1.890000 0000 0000 0000 +E: 1.895000 0002 0000 0001 +E: 1.895000 0000 0000 0000 +E: 1.900000 0002 0000 0001 +E: 1.900000 0000 0000 0000 +E: 1.905000 0002 0000 0001 +E: 1.905000 0000 0000 0000 +E: 1.910000 0002 0000 0001 +E: 1.910000 0000 0000 0000 +E: 1.915000 0002 0000 0001 +E: 1.915000 0000 0000 0000 +E: 1.920000 0002 0000 0001 +E: 1.920000 0000 0000 0000 +E: 1.925000 0002 0000 0001 +E: 1.925000 0000 0000 0000 +E: 1.930000 0002 0000 0001 +E: 1.930000 0000 0000 0000 +E: 1.935000 0002 0000 0001 +E: 1.935000 0000 0000 0000 +E: 1.940000 0002 0000 0001 +E: 1.940000 0000 0000 0000 +E: 1.945000 0002 0000 -001 +E: 1.945000 0000 0000 0000 +E: 1.950000 0002 0000 -001 +E: 1.950000 0000 0000 0000 +E: 1.955000 0002 0000 -001 +E: 1.955000 0000 0000 0000 +E: 1.960000 0002 0000 -001 +E: 1.960000 0000 0000 0000 +E: 1.965000 0002 0000 -001 +E: 1.965000 0000 0000 0000 +E: 1.970000 0002 0000 -001 +E: 1.970000 0000 0000 0000 +E: 1.975000 0002 0000 -001 +E: 1.975000 0000 0000 0000 +E: 1.980000 0002 0000 -001 +E: 1.980000 0000 0000 0000 +E: 1.985000 0002 0000 -001 +E: 1.985000 0000 0000 0000 +E: 1.990000 0002 0000 -001 +E: 1.990000 0000 0000 0000 +E: 1.995000 0002 0000 -001 +E: 1.995000 0000 0000 0000 +E: 2.000000 0002 0000 -001 +E: 2.000000 0000 0000 0000 +E: 2.005000 0002 0000 -001 +E: 2.005000 0000 0000 0000 +E: 2.010000 0002 0000 -001 +E: 2.010000 0000 0000 0000 +E: 2.015000 0002 0000 -001 +E: 2.015000 0000 0000 0000 +E: 2.020000 0002 0000 -001 +E: 2.020000 0000 0000 0000 +E: 2.025000 0002 0000 -001 +E: 2.025000 0000 0000 0000 +E: 2.030000 0002 0000 -001 +E: 2.030000 0000 0000 0000 +E: 2.035000 0002 0000 -001 +E: 2.035000 0000 0000 0000 +E: 2.040000 0002 0000 -001 +E: 2.040000 0000 0000 0000 +E: 2.045000 0002 0000 -001 +E: 2.045000 0000 0000 0000 +E: 2.050000 0002 0000 -001 +E: 2.050000 0000 0000 0000 +E: 2.055000 0002 0000 -001 +E: 2.055000 0000 0000 0000 +E: 2.060000 0002 0000 -001 +E: 2.060000 0000 0000 0000 +E: 2.065000 0002 0000 -001 +E: 2.065000 0000 0000 0000 +E: 2.070000 0002 0000 -001 +E: 2.070000 0000 0000 0000 +E: 2.075000 0002 0000 -001 +E: 2.075000 0000 0000 0000 +E: 2.080000 0002 0000 -001 +E: 2.080000 0000 0000 0000 +E: 2.085000 0002 0000 -001 +E: 2.085000 0000 0000 0000 +E: 2.090000 0002 0000 -001 +E: 2.090000 0000 0000 0000 +E: 2.095000 0002 0000 -001 +E: 2.095000 0000 0000 0000 +E: 2.100000 0002 0000 -001 +E: 2.100000 0000 0000 0000 +E: 2.105000 0002 0000 -001 +E: 2.105000 0000 0000 0000 +E: 2.110000 0002 0000 -001 +E: 2.110000 0000 0000 0000 +E: 2.115000 0002 0000 -001 +E: 2.115000 0000 0000 0000 +E: 2.120000 0002 0000 -001 +E: 2.120000 0000 0000 0000 +E: 2.125000 0002 0000 -001 +E: 2.125000 0000 0000 0000 +E: 2.130000 0002 0000 -001 +E: 2.130000 0000 0000 0000 +E: 2.135000 0002 0000 -001 +E: 2.135000 0000 0000 0000 +E: 2.140000 0002 0000 -001 +E: 2.140000 0000 0000 0000 +E: 2.145000 0002 0000 -001 +E: 2.145000 0000 0000 0000 +E: 2.150000 0002 0000 -001 +E: 2.150000 0000 0000 0000 +E: 2.155000 0002 0000 -001 +E: 2.155000 0000 0000 0000 +E: 2.160000 0002 0000 -001 +E: 2.160000 0000 0000 0000 +E: 2.165000 0002 0000 -001 +E: 2.165000 0000 0000 0000 +E: 2.170000 0002 0000 -001 +E: 2.170000 0000 0000 0000 +E: 2.175000 0002 0000 -001 +E: 2.175000 0000 0000 0000 +E: 2.180000 0002 0000 -001 +E: 2.180000 0000 0000 0000 +E: 2.185000 0002 0000 -001 +E: 2.185000 0000 0000 0000 +E: 2.190000 0002 0000 -001 +E: 2.190000 0000 0000 0000 +E: 2.195000 0002 0000 -001 +E: 2.195000 0000 0000 0000 +E: 2.200000 0002 0000 -001 +E: 2.200000 0000 0000 0000 +E: 2.205000 0002 0000 -001 +E: 2.205000 0000 0000 0000 +E: 2.210000 0002 0000 -001 +E: 2.210000 0000 0000 0000 +E: 2.215000 0002 0000 -001 +E: 2.215000 0000 0000 0000 +E: 2.220000 0002 0000 -001 +E: 2.220000 0000 0000 0000 +E: 2.225000 0002 0000 -001 +E: 2.225000 0000 0000 0000 +E: 2.230000 0002 0000 -001 +E: 2.230000 0000 0000 0000 +E: 2.235000 0002 0000 -001 +E: 2.235000 0000 0000 0000 +E: 2.240000 0002 0000 -001 +E: 2.240000 0000 0000 0000 +E: 2.245000 0002 0000 -001 +E: 2.245000 0000 0000 0000 +E: 2.250000 0002 0000 -001 +E: 2.250000 0000 0000 0000 +E: 2.255000 0002 0000 -001 +E: 2.255000 0000 0000 0000 +E: 2.260000 0002 0000 -001 +E: 2.260000 0000 0000 0000 +E: 2.265000 0002 0000 -001 +E: 2.265000 0000 0000 0000 +E: 2.270000 0002 0000 -001 +E: 2.270000 0000 0000 0000 +E: 2.275000 0002 0000 -001 +E: 2.275000 0000 0000 0000 +E: 2.280000 0002 0000 -001 +E: 2.280000 0000 0000 0000 +E: 2.285000 0002 0000 -001 +E: 2.285000 0000 0000 0000 +E: 2.290000 0002 0000 -001 +E: 2.290000 0000 0000 0000 +E: 2.295000 0002 0000 -001 +E: 2.295000 0000 0000 0000 +E: 2.300000 0002 0000 -001 +E: 2.300000 0000 0000 0000 +E: 2.305000 0002 0000 -001 +E: 2.305000 0000 0000 0000 +E: 2.310000 0002 0000 -001 +E: 2.310000 0000 0000 0000 +E: 2.315000 0002 0000 -001 +E: 2.315000 0000 0000 0000 +E: 2.320000 0002 0000 -001 +E: 2.320000 0000 0000 0000 +E: 2.325000 0002 0000 -001 +E: 2.325000 0000 0000 0000 +E: 2.330000 0002 0000 -001 +E: 2.330000 0000 0000 0000 +E: 2.335000 0002 0000 -001 +E: 2.335000 0000 0000 0000 +E: 2.340000 0002 0000 -001 +E: 2.340000 0000 0000 0000 +E: 2.345000 0002 0000 -001 +E: 2.345000 0000 0000 0000 +E: 2.350000 0002 0000 -001 +E: 2.350000 0000 0000 0000 +E: 2.355000 0002 0000 -001 +E: 2.355000 0000 0000 0000 +E: 2.360000 0002 0000 -001 +E: 2.360000 0000 0000 0000 +E: 2.365000 0002 0000 -001 +E: 2.365000 0000 0000 0000 +E: 2.370000 0002 0000 -001 +E: 2.370000 0000 0000 0000 +E: 2.375000 0002 0000 -001 +E: 2.375000 0000 0000 0000 +E: 2.380000 0002 0000 -001 +E: 2.380000 0000 0000 0000 +E: 2.385000 0002 0000 -001 +E: 2.385000 0000 0000 0000 +E: 2.390000 0002 0000 -001 +E: 2.390000 0000 0000 0000 +E: 2.395000 0002 0000 -001 +E: 2.395000 0000 0000 0000 +E: 2.400000 0002 0000 -001 +E: 2.400000 0000 0000 0000 +E: 2.405000 0002 0000 -001 +E: 2.405000 0000 0000 0000 +E: 2.410000 0002 0000 -001 +E: 2.410000 0000 0000 0000 +E: 2.415000 0002 0000 -001 +E: 2.415000 0000 0000 0000 +E: 2.420000 0002 0000 -001 +E: 2.420000 0000 0000 0000 +E: 2.425000 0002 0000 -001 +E: 2.425000 0000 0000 0000 +E: 2.430000 0002 0000 -001 +E: 2.430000 0000 0000 0000 +E: 2.435000 0002 0000 -001 +E: 2.435000 0000 0000 0000 +E: 2.440000 0002 0000 -001 +E: 2.440000 0000 0000 0000 +E: 2.445000 0002 0000 -001 +E: 2.445000 0000 0000 0000 +E: 2.450000 0002 0000 -001 +E: 2.450000 0000 0000 0000 +E: 2.455000 0002 0000 -001 +E: 2.455000 0000 0000 0000 +E: 2.460000 0002 0000 -001 +E: 2.460000 0000 0000 0000 +E: 2.465000 0002 0000 -001 +E: 2.465000 0000 0000 0000 +E: 2.470000 0002 0000 -001 +E: 2.470000 0000 0000 0000 +E: 2.475000 0002 0000 -001 +E: 2.475000 0000 0000 0000 +E: 2.480000 0002 0000 -001 +E: 2.480000 0000 0000 0000 +E: 2.485000 0002 0000 -001 +E: 2.485000 0000 0000 0000 +E: 2.490000 0002 0000 -001 +E: 2.490000 0000 0000 0000 +E: 2.495000 0002 0000 -001 +E: 2.495000 0000 0000 0000 +E: 2.500000 0002 0000 -001 +E: 2.500000 0000 0000 0000 +E: 2.505000 0002 0000 -001 +E: 2.505000 0000 0000 0000 +E: 2.510000 0002 0000 -001 +E: 2.510000 0000 0000 0000 +E: 2.515000 0002 0000 -001 +E: 2.515000 0000 0000 0000 +E: 2.520000 0002 0000 -001 +E: 2.520000 0000 0000 0000 +E: 2.525000 0002 0000 -001 +E: 2.525000 0000 0000 0000 +E: 2.530000 0002 0000 -001 +E: 2.530000 0000 0000 0000 +E: 2.535000 0002 0000 -001 +E: 2.535000 0000 0000 0000 +E: 2.540000 0002 0000 -001 +E: 2.540000 0000 0000 0000 +E: 2.545000 0002 0000 -001 +E: 2.545000 0000 0000 0000 +E: 2.550000 0002 0000 -001 +E: 2.550000 0000 0000 0000 +E: 2.555000 0002 0000 -001 +E: 2.555000 0000 0000 0000 +E: 2.560000 0002 0000 -001 +E: 2.560000 0000 0000 0000 +E: 2.565000 0002 0000 -001 +E: 2.565000 0000 0000 0000 +E: 2.570000 0002 0000 -001 +E: 2.570000 0000 0000 0000 +E: 2.575000 0002 0000 -001 +E: 2.575000 0000 0000 0000 +E: 2.580000 0002 0000 -001 +E: 2.580000 0000 0000 0000 +E: 2.585000 0002 0000 -001 +E: 2.585000 0000 0000 0000 +E: 2.590000 0002 0000 -001 +E: 2.590000 0000 0000 0000 +E: 3.885000 0002 0000 0001 +E: 3.885000 0000 0000 0000 +E: 3.890000 0002 0000 0001 +E: 3.890000 0000 0000 0000 +E: 3.895000 0002 0000 0001 +E: 3.895000 0000 0000 0000 +E: 3.900000 0002 0000 0001 +E: 3.900000 0000 0000 0000 +E: 3.905000 0002 0000 0001 +E: 3.905000 0000 0000 0000 +E: 3.910000 0002 0000 0001 +E: 3.910000 0000 0000 0000 +E: 3.915000 0002 0000 0001 +E: 3.915000 0000 0000 0000 +E: 3.920000 0002 0000 0001 +E: 3.920000 0000 0000 0000 +E: 3.925000 0002 0000 0001 +E: 3.925000 0000 0000 0000 +E: 3.930000 0002 0000 0001 +E: 3.930000 0000 0000 0000 +E: 3.935000 0002 0000 0001 +E: 3.935000 0000 0000 0000 +E: 3.940000 0002 0000 0001 +E: 3.940000 0000 0000 0000 +E: 3.945000 0002 0000 0001 +E: 3.945000 0000 0000 0000 +E: 3.950000 0002 0000 0001 +E: 3.950000 0000 0000 0000 +E: 3.955000 0002 0000 0001 +E: 3.955000 0000 0000 0000 +E: 3.960000 0002 0000 0001 +E: 3.960000 0000 0000 0000 +E: 3.965000 0002 0000 0001 +E: 3.965000 0000 0000 0000 +E: 3.970000 0002 0000 0001 +E: 3.970000 0000 0000 0000 +E: 3.975000 0002 0000 0001 +E: 3.975000 0000 0000 0000 +E: 3.980000 0002 0000 0001 +E: 3.980000 0000 0000 0000 +E: 3.985000 0002 0000 0001 +E: 3.985000 0000 0000 0000 +E: 3.990000 0002 0000 0001 +E: 3.990000 0000 0000 0000 +E: 3.995000 0002 0000 0001 +E: 3.995000 0000 0000 0000 +E: 4.000000 0002 0000 0001 +E: 4.000000 0000 0000 0000 +E: 4.005000 0002 0000 0001 +E: 4.005000 0000 0000 0000 +E: 4.010000 0002 0000 0001 +E: 4.010000 0000 0000 0000 +E: 4.015000 0002 0000 0001 +E: 4.015000 0000 0000 0000 +E: 4.020000 0002 0000 0001 +E: 4.020000 0000 0000 0000 +E: 4.025000 0002 0000 0001 +E: 4.025000 0000 0000 0000 +E: 4.030000 0002 0000 0001 +E: 4.030000 0000 0000 0000 +E: 4.035000 0002 0000 0001 +E: 4.035000 0000 0000 0000 +E: 4.040000 0002 0000 0001 +E: 4.040000 0000 0000 0000 +E: 4.045000 0002 0000 0001 +E: 4.045000 0000 0000 0000 +E: 4.050000 0002 0000 0001 +E: 4.050000 0000 0000 0000 +E: 4.055000 0002 0000 0001 +E: 4.055000 0000 0000 0000 +E: 4.060000 0002 0000 0001 +E: 4.060000 0000 0000 0000 +E: 4.065000 0002 0000 0001 +E: 4.065000 0000 0000 0000 +E: 4.070000 0002 0000 0001 +E: 4.070000 0000 0000 0000 +E: 4.075000 0002 0000 0001 +E: 4.075000 0000 0000 0000 +E: 4.080000 0002 0000 0001 +E: 4.080000 0000 0000 0000 +E: 4.085000 0002 0000 0001 +E: 4.085000 0000 0000 0000 +E: 4.090000 0002 0000 0001 +E: 4.090000 0000 0000 0000 +E: 4.095000 0002 0000 0001 +E: 4.095000 0000 0000 0000 +E: 4.100000 0002 0000 0001 +E: 4.100000 0000 0000 0000 +E: 4.105000 0002 0000 0001 +E: 4.105000 0000 0000 0000 +E: 4.110000 0002 0000 0001 +E: 4.110000 0000 0000 0000 +E: 4.115000 0002 0000 0001 +E: 4.115000 0000 0000 0000 +E: 4.120000 0002 0000 0001 +E: 4.120000 0000 0000 0000 +E: 4.125000 0002 0000 0001 +E: 4.125000 0000 0000 0000 +E: 4.130000 0002 0000 0001 +E: 4.130000 0000 0000 0000 +E: 4.135000 0002 0000 0001 +E: 4.135000 0000 0000 0000 +E: 4.140000 0002 0000 0001 +E: 4.140000 0000 0000 0000 +E: 4.145000 0002 0000 0001 +E: 4.145000 0000 0000 0000 +E: 4.150000 0002 0000 0001 +E: 4.150000 0000 0000 0000 +E: 4.155000 0002 0000 0001 +E: 4.155000 0000 0000 0000 +E: 4.160000 0002 0000 0001 +E: 4.160000 0000 0000 0000 +E: 4.165000 0002 0000 0001 +E: 4.165000 0000 0000 0000 +E: 4.170000 0002 0000 0001 +E: 4.170000 0000 0000 0000 +E: 4.175000 0002 0000 0001 +E: 4.175000 0000 0000 0000 +E: 4.180000 0002 0000 0001 +E: 4.180000 0000 0000 0000 +E: 4.185000 0002 0000 0001 +E: 4.185000 0000 0000 0000 +E: 4.190000 0002 0000 0001 +E: 4.190000 0000 0000 0000 +E: 4.195000 0002 0000 0001 +E: 4.195000 0000 0000 0000 +E: 4.200000 0002 0000 0001 +E: 4.200000 0000 0000 0000 +E: 4.205000 0002 0000 0001 +E: 4.205000 0000 0000 0000 +E: 4.210000 0002 0000 0001 +E: 4.210000 0000 0000 0000 +E: 4.215000 0002 0000 0001 +E: 4.215000 0000 0000 0000 +E: 4.220000 0002 0000 0001 +E: 4.220000 0000 0000 0000 +E: 4.225000 0002 0000 0001 +E: 4.225000 0000 0000 0000 +E: 4.230000 0002 0000 0001 +E: 4.230000 0000 0000 0000 +E: 4.235000 0002 0000 0001 +E: 4.235000 0000 0000 0000 +E: 4.240000 0002 0000 0001 +E: 4.240000 0000 0000 0000 +E: 4.245000 0002 0000 0001 +E: 4.245000 0000 0000 0000 +E: 4.250000 0002 0000 0001 +E: 4.250000 0000 0000 0000 +E: 4.255000 0002 0000 0001 +E: 4.255000 0000 0000 0000 +E: 4.260000 0002 0000 0001 +E: 4.260000 0000 0000 0000 +E: 4.265000 0002 0000 0001 +E: 4.265000 0000 0000 0000 +E: 4.270000 0002 0000 0001 +E: 4.270000 0000 0000 0000 +E: 4.275000 0002 0000 0001 +E: 4.275000 0000 0000 0000 +E: 4.280000 0002 0000 0001 +E: 4.280000 0000 0000 0000 +E: 4.285000 0002 0000 0001 +E: 4.285000 0000 0000 0000 +E: 4.290000 0002 0000 0001 +E: 4.290000 0000 0000 0000 +E: 4.295000 0002 0000 0001 +E: 4.295000 0000 0000 0000 +E: 4.300000 0002 0000 0001 +E: 4.300000 0000 0000 0000 +E: 4.305000 0002 0000 0001 +E: 4.305000 0000 0000 0000 +E: 4.310000 0002 0000 0001 +E: 4.310000 0000 0000 0000 +E: 4.315000 0002 0000 0001 +E: 4.315000 0000 0000 0000 +E: 4.320000 0002 0000 0001 +E: 4.320000 0000 0000 0000 +E: 4.325000 0002 0000 0001 +E: 4.325000 0000 0000 0000 +E: 4.330000 0002 0000 0001 +E: 4.330000 0000 0000 0000 +E: 4.335000 0002 0000 0001 +E: 4.335000 0000 0000 0000 +E: 4.340000 0002 0000 0001 +E: 4.340000 0000 0000 0000 +E: 4.345000 0002 0000 0001 +E: 4.345000 0000 0000 0000 +E: 4.350000 0002 0000 0001 +E: 4.350000 0000 0000 0000 +E: 4.355000 0002 0000 0001 +E: 4.355000 0000 0000 0000 +E: 4.360000 0002 0000 0001 +E: 4.360000 0000 0000 0000 +E: 4.365000 0002 0000 0001 +E: 4.365000 0000 0000 0000 +E: 4.370000 0002 0000 0001 +E: 4.370000 0000 0000 0000 +E: 4.375000 0002 0000 0001 +E: 4.375000 0000 0000 0000 +E: 4.380000 0002 0000 0001 +E: 4.380000 0000 0000 0000 +E: 4.385000 0002 0000 0001 +E: 4.385000 0000 0000 0000 +E: 4.390000 0002 0000 0001 +E: 4.390000 0000 0000 0000 +E: 4.395000 0002 0000 0001 +E: 4.395000 0000 0000 0000 +E: 4.400000 0002 0000 0001 +E: 4.400000 0000 0000 0000 +E: 4.405000 0002 0000 0001 +E: 4.405000 0000 0000 0000 +E: 4.410000 0002 0000 0001 +E: 4.410000 0000 0000 0000 +E: 4.415000 0002 0000 0001 +E: 4.415000 0000 0000 0000 +E: 4.420000 0002 0000 0001 +E: 4.420000 0000 0000 0000 +E: 4.425000 0002 0000 0001 +E: 4.425000 0000 0000 0000 +E: 4.430000 0002 0000 0001 +E: 4.430000 0000 0000 0000 +E: 4.435000 0002 0000 0001 +E: 4.435000 0000 0000 0000 +E: 4.440000 0002 0000 0001 +E: 4.440000 0000 0000 0000 +E: 4.445000 0002 0000 0001 +E: 4.445000 0000 0000 0000 +E: 4.450000 0002 0000 0001 +E: 4.450000 0000 0000 0000 +E: 4.455000 0002 0000 0001 +E: 4.455000 0000 0000 0000 +E: 4.460000 0002 0000 0001 +E: 4.460000 0000 0000 0000 +E: 4.465000 0002 0000 0001 +E: 4.465000 0000 0000 0000 +E: 4.470000 0002 0000 0001 +E: 4.470000 0000 0000 0000 +E: 4.475000 0002 0000 0001 +E: 4.475000 0000 0000 0000 +E: 4.480000 0002 0000 0001 +E: 4.480000 0000 0000 0000 +E: 4.485000 0002 0000 0001 +E: 4.485000 0000 0000 0000 +E: 4.490000 0002 0000 0001 +E: 4.490000 0000 0000 0000 +E: 4.495000 0002 0000 0001 +E: 4.495000 0000 0000 0000 +E: 4.500000 0002 0000 0001 +E: 4.500000 0000 0000 0000 +E: 4.505000 0002 0000 0001 +E: 4.505000 0000 0000 0000 +E: 4.510000 0002 0000 0001 +E: 4.510000 0000 0000 0000 +E: 4.515000 0002 0000 0001 +E: 4.515000 0000 0000 0000 +E: 4.520000 0002 0000 0001 +E: 4.520000 0000 0000 0000 +E: 4.525000 0002 0000 0001 +E: 4.525000 0000 0000 0000 +E: 4.530000 0002 0000 0001 +E: 4.530000 0000 0000 0000 +E: 4.535000 0002 0000 -001 +E: 4.535000 0000 0000 0000 +E: 4.540000 0002 0000 -001 +E: 4.540000 0000 0000 0000 +E: 4.545000 0002 0000 -001 +E: 4.545000 0000 0000 0000 +E: 4.550000 0002 0000 -001 +E: 4.550000 0000 0000 0000 +E: 4.555000 0002 0000 -001 +E: 4.555000 0000 0000 0000 +E: 4.560000 0002 0000 -001 +E: 4.560000 0000 0000 0000 +E: 4.565000 0002 0000 -001 +E: 4.565000 0000 0000 0000 +E: 4.570000 0002 0000 -001 +E: 4.570000 0000 0000 0000 +E: 4.575000 0002 0000 -001 +E: 4.575000 0000 0000 0000 +E: 4.580000 0002 0000 -001 +E: 4.580000 0000 0000 0000 +E: 4.585000 0002 0000 -001 +E: 4.585000 0000 0000 0000 +E: 4.590000 0002 0000 -001 +E: 4.590000 0000 0000 0000 +E: 4.595000 0002 0000 -001 +E: 4.595000 0000 0000 0000 +E: 4.600000 0002 0000 -001 +E: 4.600000 0000 0000 0000 +E: 4.605000 0002 0000 -001 +E: 4.605000 0000 0000 0000 +E: 4.610000 0002 0000 -001 +E: 4.610000 0000 0000 0000 +E: 4.615000 0002 0000 -001 +E: 4.615000 0000 0000 0000 +E: 4.620000 0002 0000 -001 +E: 4.620000 0000 0000 0000 +E: 4.625000 0002 0000 -001 +E: 4.625000 0000 0000 0000 +E: 4.630000 0002 0000 -001 +E: 4.630000 0000 0000 0000 +E: 4.635000 0002 0000 -001 +E: 4.635000 0000 0000 0000 +E: 4.640000 0002 0000 -001 +E: 4.640000 0000 0000 0000 +E: 4.645000 0002 0000 -001 +E: 4.645000 0000 0000 0000 +E: 4.650000 0002 0000 -001 +E: 4.650000 0000 0000 0000 +E: 4.655000 0002 0000 -001 +E: 4.655000 0000 0000 0000 +E: 4.660000 0002 0000 -001 +E: 4.660000 0000 0000 0000 +E: 4.665000 0002 0000 -001 +E: 4.665000 0000 0000 0000 +E: 4.670000 0002 0000 -001 +E: 4.670000 0000 0000 0000 +E: 4.675000 0002 0000 -001 +E: 4.675000 0000 0000 0000 +E: 4.680000 0002 0000 -001 +E: 4.680000 0000 0000 0000 +E: 4.685000 0002 0000 -001 +E: 4.685000 0000 0000 0000 +E: 4.690000 0002 0000 -001 +E: 4.690000 0000 0000 0000 +E: 4.695000 0002 0000 -001 +E: 4.695000 0000 0000 0000 +E: 4.700000 0002 0000 -001 +E: 4.700000 0000 0000 0000 +E: 4.705000 0002 0000 -001 +E: 4.705000 0000 0000 0000 +E: 4.710000 0002 0000 -001 +E: 4.710000 0000 0000 0000 +E: 4.715000 0002 0000 -001 +E: 4.715000 0000 0000 0000 +E: 4.720000 0002 0000 -001 +E: 4.720000 0000 0000 0000 +E: 4.725000 0002 0000 -001 +E: 4.725000 0000 0000 0000 +E: 4.730000 0002 0000 -001 +E: 4.730000 0000 0000 0000 +E: 4.735000 0002 0000 -001 +E: 4.735000 0000 0000 0000 +E: 4.740000 0002 0000 -001 +E: 4.740000 0000 0000 0000 +E: 4.745000 0002 0000 -001 +E: 4.745000 0000 0000 0000 +E: 4.750000 0002 0000 -001 +E: 4.750000 0000 0000 0000 +E: 4.755000 0002 0000 -001 +E: 4.755000 0000 0000 0000 +E: 4.760000 0002 0000 -001 +E: 4.760000 0000 0000 0000 +E: 4.765000 0002 0000 -001 +E: 4.765000 0000 0000 0000 +E: 4.770000 0002 0000 -001 +E: 4.770000 0000 0000 0000 +E: 4.775000 0002 0000 -001 +E: 4.775000 0000 0000 0000 +E: 4.780000 0002 0000 -001 +E: 4.780000 0000 0000 0000 +E: 4.785000 0002 0000 -001 +E: 4.785000 0000 0000 0000 +E: 4.790000 0002 0000 -001 +E: 4.790000 0000 0000 0000 +E: 4.795000 0002 0000 -001 +E: 4.795000 0000 0000 0000 +E: 4.800000 0002 0000 -001 +E: 4.800000 0000 0000 0000 +E: 4.805000 0002 0000 -001 +E: 4.805000 0000 0000 0000 +E: 4.810000 0002 0000 -001 +E: 4.810000 0000 0000 0000 +E: 4.815000 0002 0000 -001 +E: 4.815000 0000 0000 0000 +E: 4.820000 0002 0000 -001 +E: 4.820000 0000 0000 0000 +E: 4.825000 0002 0000 -001 +E: 4.825000 0000 0000 0000 +E: 4.830000 0002 0000 -001 +E: 4.830000 0000 0000 0000 +E: 4.835000 0002 0000 -001 +E: 4.835000 0000 0000 0000 +E: 4.840000 0002 0000 -001 +E: 4.840000 0000 0000 0000 +E: 4.845000 0002 0000 -001 +E: 4.845000 0000 0000 0000 +E: 4.850000 0002 0000 -001 +E: 4.850000 0000 0000 0000 +E: 4.855000 0002 0000 -001 +E: 4.855000 0000 0000 0000 +E: 4.860000 0002 0000 -001 +E: 4.860000 0000 0000 0000 +E: 4.865000 0002 0000 -001 +E: 4.865000 0000 0000 0000 +E: 4.870000 0002 0000 -001 +E: 4.870000 0000 0000 0000 +E: 4.875000 0002 0000 -001 +E: 4.875000 0000 0000 0000 +E: 4.880000 0002 0000 -001 +E: 4.880000 0000 0000 0000 +E: 4.885000 0002 0000 -001 +E: 4.885000 0000 0000 0000 +E: 4.890000 0002 0000 -001 +E: 4.890000 0000 0000 0000 +E: 4.895000 0002 0000 -001 +E: 4.895000 0000 0000 0000 +E: 4.900000 0002 0000 -001 +E: 4.900000 0000 0000 0000 +E: 4.905000 0002 0000 -001 +E: 4.905000 0000 0000 0000 +E: 4.910000 0002 0000 -001 +E: 4.910000 0000 0000 0000 +E: 4.915000 0002 0000 -001 +E: 4.915000 0000 0000 0000 +E: 4.920000 0002 0000 -001 +E: 4.920000 0000 0000 0000 +E: 4.925000 0002 0000 -001 +E: 4.925000 0000 0000 0000 +E: 4.930000 0002 0000 -001 +E: 4.930000 0000 0000 0000 +E: 4.935000 0002 0000 -001 +E: 4.935000 0000 0000 0000 +E: 4.940000 0002 0000 -001 +E: 4.940000 0000 0000 0000 +E: 4.945000 0002 0000 -001 +E: 4.945000 0000 0000 0000 +E: 4.950000 0002 0000 -001 +E: 4.950000 0000 0000 0000 +E: 4.955000 0002 0000 -001 +E: 4.955000 0000 0000 0000 +E: 4.960000 0002 0000 -001 +E: 4.960000 0000 0000 0000 +E: 4.965000 0002 0000 -001 +E: 4.965000 0000 0000 0000 +E: 4.970000 0002 0000 -001 +E: 4.970000 0000 0000 0000 +E: 4.975000 0002 0000 -001 +E: 4.975000 0000 0000 0000 +E: 4.980000 0002 0000 -001 +E: 4.980000 0000 0000 0000 +E: 4.985000 0002 0000 -001 +E: 4.985000 0000 0000 0000 +E: 4.990000 0002 0000 -001 +E: 4.990000 0000 0000 0000 +E: 4.995000 0002 0000 -001 +E: 4.995000 0000 0000 0000 +E: 5.000000 0002 0000 -001 +E: 5.000000 0000 0000 0000 +E: 5.005000 0002 0000 -001 +E: 5.005000 0000 0000 0000 +E: 5.010000 0002 0000 -001 +E: 5.010000 0000 0000 0000 +E: 5.015000 0002 0000 -001 +E: 5.015000 0000 0000 0000 +E: 5.020000 0002 0000 -001 +E: 5.020000 0000 0000 0000 +E: 5.025000 0002 0000 -001 +E: 5.025000 0000 0000 0000 +E: 5.030000 0002 0000 -001 +E: 5.030000 0000 0000 0000 +E: 5.035000 0002 0000 -001 +E: 5.035000 0000 0000 0000 +E: 5.040000 0002 0000 -001 +E: 5.040000 0000 0000 0000 +E: 5.045000 0002 0000 -001 +E: 5.045000 0000 0000 0000 +E: 5.050000 0002 0000 -001 +E: 5.050000 0000 0000 0000 +E: 5.055000 0002 0000 -001 +E: 5.055000 0000 0000 0000 +E: 5.060000 0002 0000 -001 +E: 5.060000 0000 0000 0000 +E: 5.065000 0002 0000 -001 +E: 5.065000 0000 0000 0000 +E: 5.070000 0002 0000 -001 +E: 5.070000 0000 0000 0000 +E: 5.075000 0002 0000 -001 +E: 5.075000 0000 0000 0000 +E: 5.080000 0002 0000 -001 +E: 5.080000 0000 0000 0000 +E: 5.085000 0002 0000 -001 +E: 5.085000 0000 0000 0000 +E: 5.090000 0002 0000 -001 +E: 5.090000 0000 0000 0000 +E: 5.095000 0002 0000 -001 +E: 5.095000 0000 0000 0000 +E: 5.100000 0002 0000 -001 +E: 5.100000 0000 0000 0000 +E: 5.105000 0002 0000 -001 +E: 5.105000 0000 0000 0000 +E: 5.110000 0002 0000 -001 +E: 5.110000 0000 0000 0000 +E: 5.115000 0002 0000 -001 +E: 5.115000 0000 0000 0000 +E: 5.120000 0002 0000 -001 +E: 5.120000 0000 0000 0000 +E: 5.125000 0002 0000 -001 +E: 5.125000 0000 0000 0000 +E: 5.130000 0002 0000 -001 +E: 5.130000 0000 0000 0000 +E: 5.135000 0002 0000 -001 +E: 5.135000 0000 0000 0000 +E: 5.140000 0002 0000 -001 +E: 5.140000 0000 0000 0000 +E: 5.145000 0002 0000 -001 +E: 5.145000 0000 0000 0000 +E: 5.150000 0002 0000 -001 +E: 5.150000 0000 0000 0000 +E: 5.155000 0002 0000 -001 +E: 5.155000 0000 0000 0000 +E: 5.160000 0002 0000 -001 +E: 5.160000 0000 0000 0000 +E: 5.165000 0002 0000 -001 +E: 5.165000 0000 0000 0000 +E: 5.170000 0002 0000 -001 +E: 5.170000 0000 0000 0000 +E: 5.175000 0002 0000 -001 +E: 5.175000 0000 0000 0000 +E: 5.180000 0002 0000 -001 +E: 5.180000 0000 0000 0000 diff --git a/app/simulator/template.evemu.orig b/app/simulator/template.evemu.orig new file mode 100644 index 0000000..a7cc8cf --- /dev/null +++ b/app/simulator/template.evemu.orig @@ -0,0 +1,2199 @@ +# EVEMU 1.3 +# Kernel: 4.19.108+ +# Input device name: "rotary@4" +# Input device ID: bus 0x19 vendor 0000 product 0000 version 0000 +# Supported events: +# Event type 0 (EV_SYN) +# Event code 0 (SYN_REPORT) +# Event code 1 (SYN_CONFIG) +# Event code 2 (SYN_MT_REPORT) +# Event code 3 (SYN_DROPPED) +# Event code 4 ((null)) +# Event code 5 ((null)) +# Event code 6 ((null)) +# Event code 7 ((null)) +# Event code 8 ((null)) +# Event code 9 ((null)) +# Event code 10 ((null)) +# Event code 11 ((null)) +# Event code 12 ((null)) +# Event code 13 ((null)) +# Event code 14 ((null)) +# Event code 15 (SYN_MAX) +# Event type 2 (EV_REL) +# Event code 0 (REL_X) +# Properties: +N: rotary@4 +I: 0019 0000 0000 0000 +P: 00 00 00 00 00 00 00 00 +B: 00 0b 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 02 01 00 00 00 00 00 00 00 +B: 03 00 00 00 00 00 00 00 00 +B: 04 00 00 00 00 00 00 00 00 +B: 05 00 00 00 00 00 00 00 00 +B: 11 00 00 00 00 00 00 00 00 +B: 12 00 00 00 00 00 00 00 00 +B: 14 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +################################ +# Waiting for events # +################################ +E: 0.000001 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.000001 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +0ms +E: 0.036350 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.036350 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +36ms +E: 0.059516 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.059516 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +23ms +E: 0.074765 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.074765 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +15ms +E: 0.090600 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.090600 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms +E: 0.103808 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.103808 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 0.116200 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.116200 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 0.126770 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.126770 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 0.137497 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.137497 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 0.147210 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.147210 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 0.156106 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.156106 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 0.163721 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.163721 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 0.172521 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.172521 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 0.178940 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.178940 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.186299 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.186299 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 0.191825 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.191825 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.198261 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.198261 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 0.203000 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.203000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.209042 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.209042 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.214117 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.214117 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.219947 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.219947 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.225558 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.225558 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.231400 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.231400 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.236764 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.236764 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.242718 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.242718 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.248133 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.248133 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.254204 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.254204 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.258878 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.258878 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.264539 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.264539 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.269510 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.269510 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.274728 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.274728 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.279157 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.279157 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.284690 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.284690 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.288803 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.288803 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.294191 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.294191 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.298287 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.298287 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.303405 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.303405 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.307249 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.307249 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.312113 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.312113 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.316382 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.316382 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.320821 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.320821 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.325161 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.325161 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.329926 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.329926 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.333684 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.333684 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.337376 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.337376 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.342525 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.342525 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.346699 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.346699 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.350320 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.350320 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.354783 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.354783 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.359170 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.359170 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.363197 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.363197 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.366951 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.366951 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.371225 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.371225 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.374717 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.374717 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.378999 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.378999 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.382420 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.382420 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.386575 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.386575 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.390024 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.390024 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.394014 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.394014 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.397916 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.397916 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.401648 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.401648 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.405751 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.405751 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.409807 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.409807 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.413439 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.413439 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.417711 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.417711 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.421755 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.421755 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.426160 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.426160 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.429672 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.429672 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.434007 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.434007 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.437787 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.437787 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.441841 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.441841 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.445387 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.445387 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.449954 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.449954 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.453435 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.453435 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.458199 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.458199 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.461883 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.461883 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.466606 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.466606 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.470240 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.470240 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.474819 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.474819 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.478797 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.478797 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.483151 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.483151 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.487302 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.487302 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.491900 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.491900 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.495521 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.495521 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.500053 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.500053 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.503882 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.503882 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.507830 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.507830 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.511213 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.511213 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.515438 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.515438 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.519397 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.519397 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.523212 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.523212 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.526880 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.526880 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.530882 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.530882 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.534158 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.534158 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.538158 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.538158 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.541409 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.541409 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.545203 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.545203 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.548473 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.548473 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.552095 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.552095 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.555616 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.555616 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.558990 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.558990 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.562520 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.562520 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.566281 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.566281 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.569459 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.569459 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.573304 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.573304 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.576909 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.576909 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.580712 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.580712 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.583781 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.583781 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.587570 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.587570 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.590914 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.590914 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.594403 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.594403 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.597504 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.597504 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.601367 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.601367 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.604279 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.604279 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.608267 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.608267 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.611307 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.611307 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.615086 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.615086 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.617948 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.617948 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 0.621631 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.621631 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.624817 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.624817 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.628291 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.628291 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.631593 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.631593 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.635385 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.635385 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.638363 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.638363 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.642101 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.642101 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.645322 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.645322 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.648650 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.648650 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.651539 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.651539 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.655139 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.655139 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.658417 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.658417 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.661722 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.661722 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.664911 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.664911 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.668293 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.668293 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.671079 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.671079 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.674531 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.674531 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.677401 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.677401 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.680715 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.680715 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.683644 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.683644 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.686950 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.686950 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.689975 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.689975 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.693294 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.693294 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.696359 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.696359 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.700074 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.700074 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.702962 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.702962 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 0.706874 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.706874 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.710323 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.710323 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.714149 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.714149 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.717293 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.717293 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.721172 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.721172 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.724619 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.724619 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.728260 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.728260 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.731527 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.731527 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.735560 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.735560 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.738638 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.738638 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.742867 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.742867 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.746121 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.746121 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.750239 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.750239 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.753367 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.753367 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.757353 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.757353 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.760873 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.760873 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.764718 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.764718 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.768313 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.768313 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.772504 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.772504 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.775772 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.775772 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.779945 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.779945 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.783525 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.783525 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.787295 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.787295 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.790587 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.790587 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.794758 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.794758 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.798455 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.798455 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.802393 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.802393 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.806156 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.806156 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.810241 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.810241 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.813643 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.813643 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.817857 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.817857 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.821500 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.821500 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.825594 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.825594 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.829328 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.829328 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.833496 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.833496 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.837422 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.837422 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.841535 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.841535 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.845383 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.845383 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.850099 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.850099 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.853533 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.853533 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 0.858415 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.858415 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.862538 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.862538 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.867139 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.867139 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.871097 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.871097 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.875813 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.875813 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.879928 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.879928 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.884595 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.884595 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.888522 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.888522 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.893423 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.893423 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.897183 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.897183 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.902468 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.902468 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.906542 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.906542 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.911739 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.911739 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.915675 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.915675 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.920972 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.920972 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.925449 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.925449 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.930585 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.930585 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.935455 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.935455 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.941269 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.941269 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.945784 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.945784 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 0.951737 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.951737 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.956791 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.956791 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.962347 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.962347 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.967065 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.967065 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 0.973411 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.973411 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.979076 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.979076 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.985200 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.985200 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.991296 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.991296 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 0.997788 0002 0000 0001 # EV_REL / REL_X 1 +E: 0.997788 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.003592 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.003592 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.010876 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.010876 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.017032 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.017032 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.024376 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.024376 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.031543 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.031543 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.039961 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.039961 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.048799 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.048799 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.058997 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.058997 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 1.070207 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.070207 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +12ms +E: 1.086302 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.086302 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms +E: 1.101069 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.101069 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +15ms +E: 1.121579 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.121579 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +20ms +E: 1.140585 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.140585 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +19ms +E: 1.164792 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.164792 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +24ms +E: 1.193069 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.193069 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +29ms +E: 1.219895 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.219895 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +26ms +E: 1.249454 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.249454 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +30ms +E: 1.278341 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.278341 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +29ms +E: 1.307658 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.307658 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +29ms +E: 1.335770 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.335770 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +28ms +E: 1.360931 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.360931 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +25ms +E: 1.385262 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.385262 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +25ms +E: 1.401898 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.401898 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +16ms +E: 1.419243 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.419243 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +18ms +E: 1.432508 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.432508 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 1.446264 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.446264 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +14ms +E: 1.458332 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.458332 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +12ms +E: 1.470516 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.470516 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +12ms +E: 1.483883 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.483883 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 1.496980 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.496980 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 1.508180 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.508180 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +12ms +E: 1.520954 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.520954 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +12ms +E: 1.533209 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.533209 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 1.544567 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.544567 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 1.555207 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.555207 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 1.567323 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.567323 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +12ms +E: 1.578227 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.578227 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 1.589035 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.589035 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 1.599616 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.599616 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 1.609746 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.609746 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 1.618355 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.618355 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.628250 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.628250 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 1.636945 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.636945 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.646207 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.646207 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 1.654944 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.654944 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.664044 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.664044 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 1.672201 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.672201 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.681419 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.681419 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.689177 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.689177 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.698579 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.698579 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.705534 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.705534 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.714904 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.714904 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.722164 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.722164 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.729920 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.729920 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.736927 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.736927 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.744030 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.744030 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.750202 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.750202 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.757257 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.757257 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.762439 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.762439 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 1.769315 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.769315 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.774194 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.774194 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 1.781040 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.781040 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.786129 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.786129 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 1.792613 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.792613 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.797395 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.797395 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 1.803642 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.803642 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.808807 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.808807 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 1.814675 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.814675 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.820063 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.820063 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.826492 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.826492 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.831481 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.831481 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 1.838367 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.838367 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.844413 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.844413 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.851408 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.851408 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 1.857637 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.857637 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 1.866801 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.866801 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.875941 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.875941 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.888283 0002 0000 0001 # EV_REL / REL_X 1 +E: 1.888283 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +13ms +E: 1.967334 0002 0000 -001 # EV_REL / REL_X -1 +E: 1.967334 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +79ms +E: 1.976526 0002 0000 -001 # EV_REL / REL_X -1 +E: 1.976526 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 1.984350 0002 0000 -001 # EV_REL / REL_X -1 +E: 1.984350 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.992251 0002 0000 -001 # EV_REL / REL_X -1 +E: 1.992251 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 1.998519 0002 0000 -001 # EV_REL / REL_X -1 +E: 1.998519 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.005856 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.005856 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 2.011348 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.011348 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.018160 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.018160 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 2.022935 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.022935 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.028845 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.028845 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.033539 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.033539 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.038878 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.038878 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.043289 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.043289 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.048503 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.048503 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.052784 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.052784 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.057672 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.057672 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.061804 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.061804 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.066466 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.066466 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.070326 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.070326 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.074806 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.074806 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.078567 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.078567 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.082874 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.082874 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.087096 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.087096 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.091243 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.091243 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.095332 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.095332 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.098905 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.098905 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.102669 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.102669 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.106426 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.106426 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.109785 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.109785 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.113348 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.113348 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.117132 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.117132 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.120597 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.120597 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.124157 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.124157 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.127893 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.127893 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.131149 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.131149 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.134740 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.134740 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.138136 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.138136 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.141620 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.141620 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.145044 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.145044 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.148602 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.148602 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.152179 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.152179 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.155575 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.155575 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.159194 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.159194 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.162951 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.162951 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.166249 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.166249 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.170331 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.170331 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.173606 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.173606 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.177684 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.177684 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.180905 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.180905 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.184866 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.184866 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.188304 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.188304 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.192218 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.192218 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.195553 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.195553 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.199581 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.199581 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.202960 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.202960 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.206886 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.206886 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.210418 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.210418 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.214417 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.214417 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.217830 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.217830 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.221839 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.221839 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.225242 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.225242 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.229102 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.229102 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.232930 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.232930 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.236674 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.236674 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.240559 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.240559 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.243980 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.243980 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.247553 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.247553 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.251172 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.251172 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.254349 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.254349 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.257809 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.257809 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.261335 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.261335 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.264792 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.264792 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.268279 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.268279 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.271794 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.271794 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.275234 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.275234 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.278925 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.278925 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.282572 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.282572 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.286126 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.286126 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.289576 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.289576 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.293232 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.293232 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.296832 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.296832 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.300390 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.300390 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.304106 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.304106 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.307689 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.307689 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.310934 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.310934 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.314853 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.314853 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.318063 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.318063 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.322065 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.322065 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.325199 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.325199 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.328973 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.328973 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.332193 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.332193 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.335895 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.335895 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.339104 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.339104 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.342955 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.342955 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.346215 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.346215 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.350020 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.350020 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.353445 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.353445 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.357349 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.357349 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.360648 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.360648 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.364498 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.364498 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.367846 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.367846 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.371675 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.371675 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.375375 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.375375 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.379020 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.379020 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.382860 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.382860 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.386180 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.386180 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.389601 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.389601 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.393067 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.393067 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.396109 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.396109 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.399448 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.399448 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.402785 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.402785 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.405984 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.405984 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.409224 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.409224 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.412449 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.412449 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.415699 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.415699 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.419058 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.419058 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.422528 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.422528 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.425752 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.425752 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.429047 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.429047 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.432392 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.432392 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.435856 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.435856 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.439086 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.439086 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.442435 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.442435 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.445882 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.445882 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.448972 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.448972 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.452689 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.452689 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.455737 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.455737 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.459480 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.459480 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.462364 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.462364 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.465866 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.465866 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.468932 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.468932 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.472468 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.472468 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.475523 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.475523 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.479145 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.479145 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.482138 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.482138 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.485520 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.485520 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.488639 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.488639 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.492073 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.492073 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.495054 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.495054 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.498521 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.498521 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.501556 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.501556 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.505051 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.505051 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.508367 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.508367 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.511773 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.511773 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.515432 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.515432 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.518590 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.518590 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.521895 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.521895 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.525294 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.525294 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.528374 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.528374 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.531851 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.531851 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.535330 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.535330 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.538802 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.538802 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.542189 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.542189 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.545768 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.545768 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.549418 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.549418 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.553137 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.553137 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.557137 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.557137 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.560790 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.560790 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 2.564688 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.564688 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.568618 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.568618 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.572688 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.572688 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.576572 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.576572 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.580705 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.580705 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.584845 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.584845 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.588651 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.588651 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.593335 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.593335 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.597200 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.597200 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.602222 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.602222 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.606170 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.606170 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.611221 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.611221 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.615539 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.615539 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.620739 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.620739 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.625128 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.625128 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.630602 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.630602 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.635112 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.635112 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.640343 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.640343 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.645305 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.645305 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.650923 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.650923 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.655224 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.655224 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.660387 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.660387 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.664665 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.664665 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.669640 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.669640 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.674297 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.674297 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.679186 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.679186 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.684384 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.684384 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.688806 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.688806 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.693578 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.693578 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.698482 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.698482 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.702689 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.702689 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.707721 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.707721 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.712411 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.712411 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.717318 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.717318 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.722031 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.722031 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.726921 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.726921 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.731903 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.731903 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.736615 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.736615 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.741854 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.741854 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.746437 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.746437 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.751096 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.751096 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.755690 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.755690 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.760535 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.760535 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.765186 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.765186 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.769931 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.769931 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.774585 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.774585 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.778830 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.778830 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.784185 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.784185 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.788346 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.788346 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.793767 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.793767 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.797909 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.797909 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.803209 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.803209 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.807699 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.807699 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.813051 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.813051 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.817487 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.817487 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.823109 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.823109 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.827944 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.827944 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 2.833518 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.833518 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.838827 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.838827 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.844832 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.844832 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.849606 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.849606 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.855482 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.855482 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.860459 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.860459 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.866348 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.866348 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.871787 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.871787 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.877435 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.877435 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.883532 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.883532 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.888372 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.888372 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.894188 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.894188 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.899595 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.899595 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.904374 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.904374 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.909797 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.909797 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.915028 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.915028 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.920343 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.920343 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.925620 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.925620 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.930888 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.930888 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.936743 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.936743 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.941939 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.941939 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.948334 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.948334 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 2.953640 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.953640 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.959444 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.959444 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.964877 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.964877 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.971016 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.971016 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 2.976399 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.976399 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.982158 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.982158 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.987877 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.987877 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 2.993301 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.993301 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 2.999917 0002 0000 -001 # EV_REL / REL_X -1 +E: 2.999917 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 3.005576 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.005576 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 3.012705 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.012705 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 3.018858 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.018858 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 3.026784 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.026784 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 3.034864 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.034864 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 3.044523 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.044523 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 3.055158 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.055158 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 3.069569 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.069569 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +14ms +E: 3.087650 0002 0000 -001 # EV_REL / REL_X -1 +E: 3.087650 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +18ms +E: 3.175605 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.175605 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +88ms +E: 3.185479 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.185479 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 3.195766 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.195766 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 3.203581 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.203581 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 3.210890 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.210890 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 3.217392 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.217392 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 3.223737 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.223737 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 3.228790 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.228790 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.234206 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.234206 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 3.239451 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.239451 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.243654 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.243654 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.248364 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.248364 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.252884 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.252884 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.257220 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.257220 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.261503 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.261503 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.265245 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.265245 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.269402 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.269402 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.272711 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.272711 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.276698 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.276698 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.279997 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.279997 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.283777 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.283777 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.286976 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.286976 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.290619 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.290619 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.294056 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.294056 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.297570 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.297570 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.301131 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.301131 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.304840 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.304840 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.308064 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.308064 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.312108 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.312108 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.315416 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.315416 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.319288 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.319288 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.322256 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.322256 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.326014 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.326014 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.329289 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.329289 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.332747 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.332747 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.335784 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.335784 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.339502 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.339502 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.342249 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.342249 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.345998 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.345998 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.348835 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.348835 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.352483 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.352483 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.355311 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.355311 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.358824 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.358824 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.361830 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.361830 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.365129 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.365129 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.368207 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.368207 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.371755 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.371755 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.374582 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.374582 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.378121 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.378121 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.381239 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.381239 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.384306 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.384306 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.387448 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.387448 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.390625 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.390625 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.393794 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.393794 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.396982 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.396982 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.399950 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.399950 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.403206 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.403206 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.405791 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.405791 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.409073 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.409073 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.411788 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.411788 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.415039 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.415039 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.417725 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.417725 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.420943 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.420943 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.423963 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.423963 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.427090 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.427090 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.430321 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.430321 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.433643 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.433643 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.436628 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.436628 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.440413 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.440413 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.443428 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.443428 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.447040 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.447040 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.449915 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.449915 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.453594 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.453594 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.456907 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.456907 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.460354 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.460354 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.463412 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.463412 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.467253 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.467253 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.470178 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.470178 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.474162 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.474162 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.477237 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.477237 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.481110 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.481110 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.484105 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.484105 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.487859 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.487859 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.491073 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.491073 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.494647 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.494647 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.498065 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.498065 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.502018 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.502018 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.505065 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.505065 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.509076 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.509076 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.512491 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.512491 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.516009 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.516009 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.519394 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.519394 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.522936 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.522936 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.526677 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.526677 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.530238 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.530238 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.533599 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.533599 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.537241 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.537241 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.540231 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.540231 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.543886 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.543886 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.546976 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.546976 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.550578 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.550578 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.553718 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.553718 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.557311 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.557311 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.560711 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.560711 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.564256 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.564256 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.567915 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.567915 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.571510 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.571510 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.574890 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.574890 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.578825 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.578825 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.582251 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.582251 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.586187 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.586187 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.589307 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.589307 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.593301 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.593301 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.596851 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.596851 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.600694 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.600694 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.603984 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.603984 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.608134 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.608134 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.611250 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.611250 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.615482 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.615482 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.618802 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.618802 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.622884 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.622884 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.626058 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.626058 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.630029 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.630029 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.633496 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.633496 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.637333 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.637333 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.640888 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.640888 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.644997 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.644997 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.648161 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.648161 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.652219 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.652219 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.655642 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.655642 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.659254 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.659254 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.662526 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.662526 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.666092 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.666092 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.669784 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.669784 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.673211 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.673211 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.676394 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.676394 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.679892 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.679892 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.682709 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.682709 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.686212 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.686212 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.688985 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.688985 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.692311 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.692311 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.695137 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.695137 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.698322 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.698322 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.701277 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.701277 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.704399 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.704399 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.707419 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.707419 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.710765 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.710765 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.713568 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.713568 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.716890 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.716890 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.719833 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.719833 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.723200 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.723200 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.725766 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.725766 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.729053 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.729053 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.731995 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.731995 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.735205 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.735205 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.737852 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.737852 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.741157 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.741157 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.743618 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.743618 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.747048 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.747048 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.749611 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.749611 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.752914 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.752914 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.755365 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.755365 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.758502 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.758502 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.761200 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.761200 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.764172 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.764172 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.766915 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.766915 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.770138 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.770138 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.772587 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.772587 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.775851 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.775851 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.778616 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.778616 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.781547 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.781547 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.784034 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.784034 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.787130 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.787130 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.790201 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.790201 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.793022 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.793022 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.795745 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.795745 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.798781 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.798781 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.801178 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.801178 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.804186 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.804186 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.806613 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.806613 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.809532 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.809532 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.811974 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.811974 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.814789 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.814789 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.817402 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.817402 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.820258 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.820258 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.822884 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.822884 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.825986 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.825986 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.828528 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.828528 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.831556 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.831556 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.834435 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.834435 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.837617 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.837617 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.840097 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.840097 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.843182 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.843182 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.846013 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.846013 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.849142 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.849142 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.851807 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.851807 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.855060 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.855060 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.857553 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.857553 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.861060 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.861060 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.863694 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.863694 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.867163 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.867163 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.869767 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.869767 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.873114 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.873114 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.875976 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.875976 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 3.879225 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.879225 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.882247 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.882247 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.885747 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.885747 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.888504 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.888504 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.892104 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.892104 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.895142 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.895142 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.898340 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.898340 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.901019 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.901019 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.904548 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.904548 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.907790 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.907790 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.911038 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.911038 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.914211 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.914211 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.917628 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.917628 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.920434 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.920434 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.923910 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.923910 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.926839 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.926839 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.930173 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.930173 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.933070 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.933070 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.936419 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.936419 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.939394 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.939394 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.943059 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.943059 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.946172 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.946172 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.950144 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.950144 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.953204 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.953204 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 3.957479 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.957479 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.961096 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.961096 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.965434 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.965434 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.969037 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.969037 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.973638 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.973638 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.977657 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.977657 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.982478 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.982478 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.986673 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.986673 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 3.991863 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.991863 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 3.995757 0002 0000 0001 # EV_REL / REL_X 1 +E: 3.995757 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.001293 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.001293 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.005729 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.005729 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.011717 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.011717 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.016297 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.016297 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.022914 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.022914 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.028745 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.028745 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.035723 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.035723 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 4.043042 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.043042 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 4.053122 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.053122 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 4.063966 0002 0000 0001 # EV_REL / REL_X 1 +E: 4.063966 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 4.132405 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.132405 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +69ms +E: 4.140612 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.140612 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 4.148814 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.148814 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 4.155348 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.155348 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 4.162574 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.162574 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 4.168400 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.168400 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.175478 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.175478 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 4.181117 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.181117 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.187683 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.187683 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.192915 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.192915 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.198971 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.198971 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.203799 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.203799 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.209455 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.209455 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 4.214161 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.214161 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.219526 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.219526 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.224825 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.224825 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.229933 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.229933 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.234487 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.234487 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.238943 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.238943 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.243335 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.243335 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.247750 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.247750 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.251565 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.251565 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.255574 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.255574 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.259763 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.259763 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.263529 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.263529 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.267437 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.267437 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.271248 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.271248 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.274640 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.274640 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.278449 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.278449 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.281733 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.281733 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.285269 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.285269 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.288519 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.288519 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.291981 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.291981 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.295318 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.295318 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.298422 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.298422 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.301735 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.301735 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.305110 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.305110 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.308104 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.308104 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.311704 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.311704 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.314623 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.314623 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.318203 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.318203 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.321009 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.321009 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.324424 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.324424 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.327397 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.327397 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.330762 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.330762 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.333581 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.333581 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.336956 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.336956 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.339860 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.339860 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.343128 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.343128 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.346078 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.346078 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.349347 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.349347 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.352139 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.352139 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.355381 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.355381 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.358208 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.358208 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.361422 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.361422 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.364678 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.364678 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.367725 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.367725 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.370870 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.370870 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.373731 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.373731 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.376729 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.376729 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.379759 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.379759 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.382395 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.382395 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.385268 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.385268 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.388227 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.388227 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.390995 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.390995 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +2ms +E: 4.393863 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.393863 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.396736 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.396736 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.399600 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.399600 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.402734 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.402734 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.405658 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.405658 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.408648 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.408648 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.411478 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.411478 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.414478 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.414478 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.417528 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.417528 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.420461 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.420461 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.423626 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.423626 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.426794 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.426794 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.429732 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.429732 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.433205 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.433205 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.436075 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.436075 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.439681 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.439681 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.442521 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.442521 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.446096 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.446096 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.449187 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.449187 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.452773 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.452773 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.455896 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.455896 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.459588 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.459588 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.462669 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.462669 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.466244 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.466244 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.469480 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.469480 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.473093 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.473093 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.476160 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.476160 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.479766 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.479766 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.482923 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.482923 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.486516 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.486516 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.490116 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.490116 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.493517 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.493517 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.496985 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.496985 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.500105 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.500105 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.503329 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.503329 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.506628 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.506628 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.509484 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.509484 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.512698 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.512698 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.515860 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.515860 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.518902 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.518902 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.522020 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.522020 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.525114 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.525114 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.528321 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.528321 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.531657 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.531657 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.535092 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.535092 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.538338 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.538338 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.541673 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.541673 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.545096 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.545096 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.548737 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.548737 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.552115 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.552115 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.555782 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.555782 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.559426 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.559426 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.562898 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.562898 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.566919 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.566919 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.570267 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.570267 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.574547 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.574547 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.577886 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.577886 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.581977 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.581977 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.585475 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.585475 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.589447 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.589447 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.592729 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.592729 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.596648 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.596648 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.599905 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.599905 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.603657 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.603657 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.606993 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.606993 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.610773 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.610773 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.613935 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.613935 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.617716 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.617716 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.621027 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.621027 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.624823 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.624823 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.628517 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.628517 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.632070 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.632070 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.635853 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.635853 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.639145 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.639145 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.642585 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.642585 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.646198 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.646198 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.649289 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.649289 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.652831 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.652831 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.656318 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.656318 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.659705 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.659705 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.663169 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.663169 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.666747 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.666747 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.670340 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.670340 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.673940 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.673940 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.677943 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.677943 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.681564 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.681564 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.685322 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.685322 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.689063 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.689063 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.693078 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.693078 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.696724 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.696724 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.700540 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.700540 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.704351 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.704351 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.707841 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.707841 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.712183 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.712183 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.715636 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.715636 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.720016 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.720016 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.723455 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.723455 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.727738 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.727738 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.731404 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.731404 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.735708 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.735708 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.739402 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.739402 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.743933 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.743933 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.747708 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.747708 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.752273 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.752273 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.756363 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.756363 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.761139 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.761139 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.765212 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.765212 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.770114 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.770114 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.774186 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.774186 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.778982 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.778982 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.783752 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.783752 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.788340 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.788340 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.793246 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.793246 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.797584 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.797584 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.801992 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.801992 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.806458 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.806458 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.810092 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.810092 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.814188 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.814188 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.818145 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.818145 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.822026 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.822026 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.825876 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.825876 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.829790 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.829790 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.833646 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.833646 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.837430 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.837430 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.841568 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.841568 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.845292 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.845292 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.849054 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.849054 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.852812 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.852812 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.856890 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.856890 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.860595 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.860595 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.864394 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.864394 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.868151 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.868151 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.871687 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.871687 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.876041 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.876041 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.879529 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.879529 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.884004 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.884004 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.887487 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.887487 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.891860 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.891860 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.895600 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.895600 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.900000 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.900000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.903634 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.903634 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.908052 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.908052 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.911722 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.911722 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.916133 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.916133 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.919977 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.919977 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +3ms +E: 4.924461 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.924461 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.928245 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.928245 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.932824 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.932824 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.936758 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.936758 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.941456 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.941456 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.945882 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.945882 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.950285 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.950285 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.955059 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.955059 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.959216 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.959216 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.963699 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.963699 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.968287 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.968287 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.972150 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.972150 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.976645 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.976645 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.980952 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.980952 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.985321 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.985321 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.989764 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.989764 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 4.994382 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.994382 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 4.999160 0002 0000 -001 # EV_REL / REL_X -1 +E: 4.999160 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.003600 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.003600 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +4ms +E: 5.008843 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.008843 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.013703 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.013703 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.018903 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.018903 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.023816 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.023816 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.029349 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.029349 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.034464 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.034464 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.039830 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.039830 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.045531 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.045531 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.050900 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.050900 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.057466 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.057466 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.063288 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.063288 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.070441 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.070441 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.076604 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.076604 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.083798 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.083798 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.090547 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.090547 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.097580 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.097580 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.104072 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.104072 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.111600 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.111600 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.118756 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.118756 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.126721 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.126721 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.134684 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.134684 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.143211 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.143211 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 5.151497 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.151497 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.160278 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.160278 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +9ms +E: 5.168369 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.168369 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.176487 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.176487 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.184321 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.184321 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.191543 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.191543 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.199539 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.199539 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.205567 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.205567 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.212393 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.212393 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.219050 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.219050 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.224519 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.224519 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.230608 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.230608 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.236338 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.236338 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.242333 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.242333 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.248503 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.248503 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.254410 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.254410 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.259933 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.259933 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +5ms +E: 5.265728 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.265728 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.272665 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.272665 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.278557 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.278557 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +6ms +E: 5.285379 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.285379 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.292006 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.292006 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.300127 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.300127 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +8ms +E: 5.307014 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.307014 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +7ms +E: 5.317668 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.317668 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 5.327792 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.327792 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +10ms +E: 5.338505 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.338505 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms +E: 5.349078 0002 0000 -001 # EV_REL / REL_X -1 +E: 5.349078 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- +11ms diff --git a/app/simulator/template.evemu.short b/app/simulator/template.evemu.short new file mode 100644 index 0000000..e7654dc --- /dev/null +++ b/app/simulator/template.evemu.short @@ -0,0 +1,35 @@ +N: rotary@4 +I: 0019 0000 0000 0000 +P: 00 00 00 00 00 00 00 00 +B: 00 0b 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 01 00 00 00 00 00 00 00 00 +B: 02 01 00 00 00 00 00 00 00 +B: 03 00 00 00 00 00 00 00 00 +B: 04 00 00 00 00 00 00 00 00 +B: 05 00 00 00 00 00 00 00 00 +B: 11 00 00 00 00 00 00 00 00 +B: 12 00 00 00 00 00 00 00 00 +B: 14 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +B: 15 00 00 00 00 00 00 00 00 +E: 0.000001 0002 0000 0001 +E: 0.000001 0000 0000 0000 +E: 0.036350 0002 0000 0001 +E: 0.036350 0000 0000 0000 +E: 0.059516 0002 0000 0001 +E: 0.059516 0000 0000 0000 +E: 0.074765 0002 0000 0001 +E: 0.074765 0000 0000 0000 +E: 0.090600 0002 0000 0001 +E: 0.090600 0000 0000 0000 diff --git a/app/speed/capture_linux.go b/app/speed/capture_linux.go new file mode 100644 index 0000000..771ff04 --- /dev/null +++ b/app/speed/capture_linux.go @@ -0,0 +1,62 @@ +package speed + +import ( + "fmt" + "time" + + evdev "github.com/gvalkov/golang-evdev" +) + +// Capture reads events from the device and send them to the channel +func (s *Speed) Capture(rawDataCh chan<- EncoderRawData) { + s.Log.V(3).Info("start speed capture") + + // TODO: better handle of device file "reconnect" + // Something to open the file when it cames to existance, without having to poll? + var device *evdev.InputDevice + var err error + for { + device, err = evdev.Open(s.Device) + if err != nil { + s.Log.V(4).Info("opening device, wait 1s", "device", s.Device, "error", err) + time.Sleep(1 * time.Second) + } else { + break + } + } + + for { + events, err := device.Read() + if err != nil { + s.Log.Error(err, "error reading from device encoder") + err := device.Release() + if err != nil { + s.Log.Error(err, "releasing device after incorrect reading") + } + + // Try to open the file again + for { + s.Log.V(5).Info("trying to open the file again") + device, err = evdev.Open(s.Device) + if err == nil { + s.Log.V(3).Info("device opened again") + break + } + time.Sleep(1 * time.Second) + } + continue + } + + s.Log.V(5).Info("new events from linear encoder", "events", events) + for i := range events { + event := &events[i] + if event.Type == evdev.EV_REL { + select { + case rawDataCh <- EncoderRawData{event.Value, event.Time.Nano()}: + default: + s.Log.Error(fmt.Errorf("rawData channel is full"), "not able to send data to processor") + } + } + } + } +} diff --git a/app/speed/capture_notlinux.go b/app/speed/capture_notlinux.go new file mode 100644 index 0000000..e7a26c9 --- /dev/null +++ b/app/speed/capture_notlinux.go @@ -0,0 +1,7 @@ +// +build !linux + +package speed + +// Capture reads events from the device and send them to the channel +func (s *Speed) Capture(rawDataCh chan<- EncoderRawData) { +} diff --git a/app/speed/speed.go b/app/speed/speed.go new file mode 100644 index 0000000..c9cf589 --- /dev/null +++ b/app/speed/speed.go @@ -0,0 +1,540 @@ +package speed + +import ( + "fmt" + "math" + "math/rand" + "time" + + "github.com/go-logr/logr" +) + +const ( + // TickDistance is the linear distance traveled by the encoder in one tick (in meters) + TickDistance float64 = 0.00179267 + // ForwardDirection is used to select if CW is forward or backwards (1 or -1) + ForwardDirection int32 = 1 + // SpeedCommandPause is the command to pause the gathering of data + SpeedCommandPause Command = "pause" + // SpeedCommandRestartRestart is the command to restart the gathering of data + SpeedCommandRestart Command = "restart" + // SpeedCommandReset is the command to put the position to zero + SpeedCommandReset Command = "reset" + // SpeedCommandCalibrate is the command to adjust the delta increments of movement + SpeedCommandCalibrate Command = "calibrate" + // SpeedCommandSimulate gnerate random data simulating an exercise + SpeedCommandSimulate Command = "simulate" + // PullUpThresholdStart is the increment in position to consider a pull up started (in meters) + PullUpThresholdStart = 0.2 + // PullUpThresholdEnd is the decrement of position, relative to the maximum, which decides we have finished the pull up (in meters) + PullUpThresholdEnd = 0.2 + // PausedMessage message send to the client when the app is not ready to run + PausedMessage = "Pause" + // StartMessage message send to the client when the app is ready to measure pull ups + StartMessage = "Ready" + // EndExerciseTimeThreshold is the duration to consider the climber has finished if no new evets are received + EndExerciseTimeThreshold time.Duration = 1 * time.Second + // EndExerciseDistanceThreshold is the distance to consider the climber is still, in meters + EndExerciseDistanceThreshold float64 = 0.05 +) + +// Speed represents the structure to measure speed +// +// Diagram of methods and channels +// eyJjb2RlIjoiZ3JhcGggVERcbiAgJSVBW1J1blNwZWVkXVxuICBCW0NhcHR1cmVdXG4gIENbQ29hY2hdXG4gIERbUHJvY2Vzc11cbiAgRXtDbGllbnR9XG4gIEZbKFN0b3JlKV1cbiAgJSVBIC0tc3RhcnQtLT4gQlxuICAlJUEgLS1zdGFydC0tPiBDXG4gICUlQSAtLXN0YXJ0LS0 +// graph TD +// %%A[RunSpeed] +// B[Capture] +// C[Coach] +// D[Process] +// E{Client} +// F[(Store)] +// %%A --start--> B +// %%A --start--> C +// %%A --start--> D +// B --rawData--> D +// E --control--> C +// D --data--> C +// C --procCtrl--> D +// D --store--> F +// C --store--> F +// C --client--> E +// +type Speed struct { + Log logr.Logger + Device string + // ClientSampling defines how often should be sent data to the client + ClientSampling time.Duration + // ExportChannel used to share calculated data + ExportChannel chan<- ExportData + // BackendCmdChannel is used to signal client from start and end detection + BackendCmdChannel chan<- BackendCmd + // ControlChannel pass commands from the client to the coach + ControlChannel chan Control + // ClientMessagesChannel used by the coach to send messages to the client + ClientMessagesChannel chan<- ClientMsg + + // rawDataChannel pass data from the capturer to the processor + rawDataChannel chan EncoderRawData + // dataChannel pass data from the processor to the coach + dataChannel chan Data + // processorControlChannel used by the coach to control the processor + processorControlChannel chan Control + // calculatorPullUpActive marks if a pull up is being done + calculatorPullUpActive bool + // calculatorPullUpNumber stores the number of pull ups of the serie + calculatorPullUpNumber int + // calculatorPullUpMaxSpeed stores the max speed of the serie + calculatorPullUpMaxSpeed float64 + // calculatorPullUpLastSpeed stores the speed of the last pull up + calculatorPullUpLastSpeed float64 + // calculatorMinDistance stores the min distance seen after starting a set + // Used to calculate the start of a pull up + calculatorMinDistance float64 + // calculatorMaxDistance stores the highes point reached doing a pull up. + // Used to decide when a pull has ended and if next pull ups are being done correctly + calculatorMaxDistance float64 + // calculatorLatestValues stores latest data seen by the calculator and it is used to decide if climber has finished + calculatorLatestValues []Data + + // exerciseActive defines if the climber is performing an exercise + exerciseActive bool + + // alarmSpeedLoss define the threshold to warn the user of a considerable loss of speed + alarmSpeedLoss float64 + + // active defines if the coach is ready or not + active bool +} + +// ClientMsg responses to the client after a command is received +type ClientMsg struct { + Value string +} + +// SpeedCommand are the available commands to send to the Coach +type Command string + +// Control is used to pass command from the ws client to the speed program +type Control struct { + Type Command + Value float64 +} + +// EncoderRawData represents an event from the linear encoder. +// value have the direction (value -1 or 1). +// timeNs is the time, in nanoseconds +type EncoderRawData struct { + value int32 + timeNs int64 +} + +// BackendCmd used to send commands to the client +// TODO refactor names to clarify usage +type BackendCmd struct { + Command *string + Value *float64 +} + +// SpeedData represents the useful data generated from each event +type Data struct { + Position float64 + Speed float64 + Time time.Time +} + +// ExportData is the data exported to be used by the external APIs +type ExportData struct { + Id int + Position float64 + Speed float64 + Time time.Time + PullUps *int + SpeedLoss *float64 + LastSpeed *float64 + MaxSpeed *float64 +} + +// RunSpeed starts the goroutines to measure and process speed +func (s *Speed) RunSpeed() { + s.Log.V(3).Info("start speed") + + // TODO cuanto espacio poner en estos canales? + s.rawDataChannel = make(chan EncoderRawData, 100) + s.dataChannel = make(chan Data, 10) + s.processorControlChannel = make(chan Control, 10) + + go s.Capture(s.rawDataChannel) + go s.Process(s.rawDataChannel, s.processorControlChannel, s.dataChannel) + go s.Coach(s.dataChannel, s.ControlChannel, s.processorControlChannel) + +} + +// Process get raw events and calculate position and speed. +// Send the data to the coach +// Could be controlled by the coach (to pause, reset, etc) +func (s *Speed) Process(rawDataCh <-chan EncoderRawData, procControlCh <-chan Control, dataCh chan<- Data) { + s.Log.V(3).Info("start speed process") + var position float64 = 0 + var lastTime int64 = 0 + // TODO quitar cuando lo tengamos calibrado? O dejar para poder usar en el futuro? + calibrationFactor := 0.0 + + // control if generated data should be sent to the encoderData channel + sendEvents := true + + for { + select { + // TODO sacar de aqui los comandos que son del coach + case c := <-procControlCh: + switch c.Type { + case SpeedCommandPause: + sendEvents = false + case SpeedCommandRestart: + sendEvents = true + case SpeedCommandReset: + position = 0 + case SpeedCommandCalibrate: + calibrationFactor += c.Value + s.Log.V(2).Info("calibrate", "value", c.Value, "calibrationFactor", calibrationFactor) + } + + case e := <-rawDataCh: + s.Log.V(5).Info("process linear encoder", "event.value", e.value, "event.timeNs", e.timeNs) + deltaPosition := float64(ForwardDirection*e.value) * (TickDistance + calibrationFactor) + position += deltaPosition + // Speed in meters/sec + speed := deltaPosition / (float64(e.timeNs-lastTime) / 1e9) + lastTime = e.timeNs + + if sendEvents { + // Convert time in nanoseconds to go time (epoch sec, epoch ns) + t := time.Unix(e.timeNs/1e9, e.timeNs-(e.timeNs/1e9)*1e9) + + // Send data without blocking. Let the processor run if the client or db queues are full + select { + case dataCh <- Data{position, speed, t}: + s.Log.V(5).Info("sent processed linear encoder event to coach", "position", position, "speed", speed) + default: + s.Log.Error(fmt.Errorf("coach channel is full"), "not able to send data", "position", position, "speed", speed) + } + } + } + } +} + +// Coach get the data processed and calculates useful info for the client +// dataCh should be receive only, but we send data on it with the simulation command +func (s *Speed) Coach(dataCh chan Data, controlCh <-chan Control, processorControlCh chan<- Control) { + // Defines if coach is working + s.active = false + // Used to signal the calculator to reset to initial state + reset := false + + // Store the last time a value was pushed to the client + var previousSent time.Time + // Uniq identifier for each of the metric sent + var id int + + // The coach only receive events in the case of a external command or if the climber moves. + // We need to detect a finished exercise if the climber stays still, so we need to generate events + ticker := time.NewTicker(250 * time.Millisecond) + + for { + select { + case c := <-controlCh: + s.Log.V(2).Info("coach command", "cmd", c.Type) + switch c.Type { + case SpeedCommandPause: + s.active = false + s.exerciseActive = false + // Pause the gather of metrics + processorControlCh <- c + s.sendClientMsg(PausedMessage) + case SpeedCommandRestart: + s.active = true + // Reset signal to calculator + reset = true + // Restart the gather of metrics + processorControlCh <- c + s.sendClientMsg(StartMessage) + case SpeedCommandReset: + // Just send the command to the processor + processorControlCh <- c + s.sendClientMsg("Reset done") + case SpeedCommandCalibrate: + // Just send the command to the processor + processorControlCh <- c + s.sendClientMsg("Calibration done") + case SpeedCommandSimulate: + s.sendClientMsg("Simulation start") + + // Pause the generator + processorControlCh <- Control{SpeedCommandPause, 0} + + go func() { + rand.Seed(time.Now().UnixNano()) + pullups := rand.Intn(6) + 1 + maxSpeed := rand.Float64() + 0.5 + distance := rand.Float64()*0.2 + 0.5 + loss := float64(rand.Intn(25)) / 100.0 + sampling := 10 * time.Millisecond + + s.Log.V(3).Info("Speed simulator", + "pullups", pullups, + "maxSpeed", maxSpeed, + "distance", distance, + "sleep", sampling.Seconds(), + "loss", loss, + ) + + // Send some small values to simulate the first events before the pullup + for i := 0; i < 3; i++ { + dataCh <- Data{ + Position: 0.01, + Speed: 0.01, + Time: time.Now(), + } + time.Sleep(100 * time.Millisecond) + } + + for i := 0; i < pullups; i++ { + maxSpeedPullup := maxSpeed - (maxSpeed * float64(i) * loss / float64(pullups-1)) + // Convert to ns and add some time, because not all pullup is a fastest speed + duration := time.Duration(1e9*distance*2/maxSpeedPullup) + 300*time.Millisecond + steps := (duration.Seconds() / sampling.Seconds()) + + s.Log.V(4).Info("pullup", + "pullup", i, + "maxSpeedPullup", maxSpeedPullup, + "duration", duration.Seconds(), + "steps", steps, + "max", math.Pi) + + for j := 0.0; j < math.Pi; j += math.Pi / steps { + position := math.Sin(j) + speed := math.Sin(j*2) * maxSpeedPullup + dataCh <- Data{ + Position: position, + Speed: speed, + Time: time.Now(), + } + + time.Sleep(sampling) + } + } + + }() + default: + s.Log.Error(fmt.Errorf("unkown command"), "coach", "type", c.Type) + } + + case d := <-dataCh: + if s.active { + numberPullUps, speedLoss, lastSpeed, maxSpeed, controlCmd := s.Calculator(d, reset) + reset = false + + s.Log.V(4).Info("send data to client", + "position", d.Position, + "speed", d.Speed, + "pullUps", numberPullUps, + "lossSpeed", speedLoss, + "lastSpeed", lastSpeed, + "maxSpeed", maxSpeed, + "controlCmd", controlCmd, + ) + + // Send backend commands to the client + // Sends start and end events + if controlCmd != nil { + select { + case s.BackendCmdChannel <- *controlCmd: + default: + s.Log.Error(fmt.Errorf("channel full"), "Cannot send data", "channel", "BackendCmdChannel") + } + } + + // Do not send data to the client faster than ClientSampling + now := time.Now() + if now.Sub(previousSent) < s.ClientSampling { + continue + } + previousSent = now + id++ + + select { + case s.ExportChannel <- ExportData{ + Id: id, + Position: d.Position, + Speed: d.Speed, + Time: time.Time{}, + PullUps: numberPullUps, + SpeedLoss: speedLoss, + LastSpeed: lastSpeed, + MaxSpeed: maxSpeed, + }: + default: + s.Log.Error(fmt.Errorf("channel full"), "Cannot send data", "channel", "ExportData") + } + } + case <-ticker.C: + if s.exerciseActive && time.Now().Sub(previousSent) > EndExerciseTimeThreshold { + s.Log.V(3).Info("Exercise finished detection because no movement", "threshold", EndExerciseTimeThreshold, "previousSent", previousSent) + + // End event + c := "end" + v := float64(previousSent.UnixNano()) / 1e9 + startCommand := BackendCmd{&c, &v} + cmd := &startCommand + s.exerciseActive = false + + select { + case s.BackendCmdChannel <- *cmd: + default: + s.Log.Error(fmt.Errorf("channel full"), "Cannot send data", "channel", "BackendCmdChannel") + } + + } + } + } +} + +// sendClientMsg used by the coach to send messaes to the client +func (s *Speed) sendClientMsg(value string) { + select { + case s.ClientMessagesChannel <- ClientMsg{value}: + default: + s.Log.Error(fmt.Errorf("client channel is full"), "not able to send client message", "value", value) + } +} + +// sendClientData is a generic function to send data to the client, generating error log in case of a full channel +func (s *Speed) sendClientData(ch chan<- float64, value float64) { + select { + case ch <- value: + default: + s.Log.Error(fmt.Errorf("client channel is full"), "not able to send client data", "value", value) + } +} + +// Calculator obtains the number of pull ups, the speed loss and the speed of the last pull up +// from the data passed by argument. +// Reset parameters is used to signal a new serie +// TODO autopause, detect pause when the climber stay still (or close to still) for several seconds +// Warn him the exercise has stopped in the ui +func (s *Speed) Calculator(data Data, reset bool) (numberPullUps *int, speedLoss *float64, lastSpeed *float64, maxSpeed *float64, cmd *BackendCmd) { + // If we are starting a new set, restart all the values + if reset { + s.calculatorPullUpActive = false + s.calculatorPullUpNumber = 0 + s.calculatorPullUpMaxSpeed = 0 + s.calculatorPullUpLastSpeed = 0 + s.calculatorMinDistance = 0 + } + + // Get the minimum position seen to use as the baseline to compare if a pull up has been started + // Compare to zero used to check for a non initializated var (assuming the sensor will not give 0.0 never) + if s.calculatorMinDistance == 0 || data.Position < s.calculatorMinDistance { + s.calculatorMinDistance = data.Position + } + + // Get higher point to decide when a pull up has finished + if data.Position > s.calculatorMaxDistance { + s.calculatorMaxDistance = data.Position + } + + // If the position increments PullUpThresholdStart from the baseline, and the speed is positive, + // the climber has started a pull up + // TODO if the climber has to move more than PullUpThresholdStart from the position of start + // the coach to the position to start the pull up, this function will not work. + if !s.calculatorPullUpActive && data.Position > s.calculatorMinDistance+PullUpThresholdStart && data.Speed > 0 { + s.calculatorPullUpActive = true + + // Reset the value of last speed, to measure the new pull up + s.calculatorPullUpLastSpeed = 0 + + // Check if this is the first pullup of a set + if !s.exerciseActive { + s.Log.V(3).Info("start event detected") + + // Start event + c := "start" + v := float64(data.Time.UnixNano()) + startCommand := BackendCmd{&c, &v} + cmd = &startCommand + s.exerciseActive = true + } + } + + // Detect end of exercise + // Could be detected in the coach, if the climber stays still (don't generate new events), or here, + // if the climer generate events within a small range, so near still + if s.exerciseActive { + s.calculatorLatestValues = append(s.calculatorLatestValues, data) + max := 0.0 + min := math.Inf(1) + lastSecondindex := 0 + now := time.Now() + for i, v := range s.calculatorLatestValues { + if v.Position > max { + max = v.Position + } + if v.Position < min { + min = v.Position + } + if now.Sub(v.Time) < 1*time.Second { + lastSecondindex = i + } + } + + // End detected if the climber has moved in a small range in the last second + difference := max - min + if difference < EndExerciseDistanceThreshold && now.Sub(s.calculatorLatestValues[0].Time) > 1*time.Second { + s.Log.V(3).Info("Exercise finished detection because only small movement", + "threshold", EndExerciseTimeThreshold, + "difference", difference, + "first event used", s.calculatorLatestValues[0], + ) + + // End event + c := "end" + v := float64(data.Time.UnixNano()) + startCommand := BackendCmd{&c, &v} + cmd = &startCommand + s.exerciseActive = false + } + + // Only stores last second events + s.calculatorLatestValues = s.calculatorLatestValues[lastSecondindex:len(s.calculatorLatestValues)] + } + + // A pull up is considered finished when the climber has descended PullUpThresholdEnd from the highest + // point and the speed is negative + if s.calculatorPullUpActive && data.Position < s.calculatorMaxDistance-PullUpThresholdEnd && data.Speed < 0 { + s.calculatorPullUpNumber++ + s.calculatorPullUpActive = false + } + + if s.calculatorPullUpActive { + // Get max speed to calculate loss of speed in next pull ups + if data.Speed > s.calculatorPullUpMaxSpeed { + s.calculatorPullUpMaxSpeed = data.Speed + } + + // Max speed of the pull up + // TODO: maybe the speed data we need is not the max but the value in the propulsive phase? Or the mean value in that phase? + // Sánchez-Medina, L. González-Badillo, J.J. (2010). Importance of the propulsive phase in strength assessment. Int J Sports Med. 31:123-129 + if data.Speed > s.calculatorPullUpLastSpeed { + s.calculatorPullUpLastSpeed = data.Speed + } + } + + // Avoid dividing by zero + sl := 0.0 + if s.calculatorPullUpMaxSpeed != 0 { + sl = 1 - s.calculatorPullUpLastSpeed/s.calculatorPullUpMaxSpeed + } + speedLoss = &sl + + return &s.calculatorPullUpNumber, speedLoss, &s.calculatorPullUpLastSpeed, &s.calculatorPullUpMaxSpeed, cmd +} diff --git a/app/speed/speed_test.go b/app/speed/speed_test.go new file mode 100644 index 0000000..5119ef4 --- /dev/null +++ b/app/speed/speed_test.go @@ -0,0 +1,135 @@ +package speed + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "strconv" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +// TestData represents the JSON file with the simulation data +type TestData struct { + Data struct { + Result []struct { + Metric struct { + Name string `json:"__name__"` + } `json:"metric"` + Values [][]interface{} `json:"values"` + } `json:"result"` + ResultType string `json:"resultType"` + } `json:"data"` + Status string `json:"status"` +} + +// ParseJSONTestData generate an array of data points from a .json file +// with measures of speed and position +func ParseJSONTestData(file string) []Data { + fileRead, err := ioutil.ReadFile(file) + if err != nil { + panic(fmt.Sprintf("reading test data file %s: %v", file, err)) + } + + var testData TestData + err = json.Unmarshal(fileRead, &testData) + if err != nil { + panic(fmt.Sprintf("test data file unmarshal %s: %v", file, err)) + } + + data := []Data{} + result := testData.SpeedData.Result[0] + for i, r := range result.Values { + v0, err := strconv.ParseFloat(r[1].(string), 64) + if err != nil { + panic(fmt.Sprintf("parsing speed value '%s': %v", r[1], err)) + } + + v1, err := strconv.ParseFloat(testData.SpeedData.Result[1].Values[i][1].(string), 64) + if err != nil { + panic(fmt.Sprintf("parsing position value '%s': %v", testData.SpeedData.Result[1].Values[i][1], err)) + } + + t, ok := r[0].(float64) + if !ok { + panic(fmt.Sprintf("parsing epoch '%s' to float64", r[0])) + } + + // Do not assume which value comes first in the json data + // case encoder_speed_value + speed := v0 + position := v1 + if result.Metric.Name == "encoder_position_value" { + speed = v1 + position = v0 + } + + data = append(data, Data{ + Position: position, + Speed: speed, + // Convert a float64 value to epoch in sec and the ns part of the epoch + Time: time.Unix(int64(t), int64((t-float64(int64(t)))*1e9)), + }) + } + + return data +} + +func TestCalculator(t *testing.T) { + tests := []struct { + name string + data []Data + expectedNumberPullUps int + expectedSpeedLoss float64 + expectedLastSpeed float64 + expectedMaxSpeed float64 + }{ + { + name: "zero", + data: []Data{ + Data{Position: 0, Speed: 0, Time: time.Unix(0, 0)}, + }, + expectedNumberPullUps: 0, + expectedSpeedLoss: 0, + expectedLastSpeed: 0, + expectedMaxSpeed: 0, + }, + { + name: "two pull ups", + data: ParseJSONTestData("tests/two_pull_ups/data.json"), + expectedNumberPullUps: 2, + expectedSpeedLoss: 0, + // The last pull up was the fastest + expectedLastSpeed: 1.308518248175, + expectedMaxSpeed: 1.308518248175, + }, + { + name: "four pull ups", + data: ParseJSONTestData("tests/four_pull_ups/data.json"), + expectedNumberPullUps: 4, + expectedSpeedLoss: 0.1176825588414715, + expectedLastSpeed: 1.081876885938, + expectedMaxSpeed: 1.226176470588, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + speed := Speed{} + var numberPullUps int + var speedLoss float64 + var lastSpeed float64 + var maxSpeed float64 + + for _, d := range test.data { + numberPullUps, speedLoss, lastSpeed, maxSpeed = speed.Calculator(d, false) + } + assert.Equal(t, test.expectedNumberPullUps, numberPullUps, "pull up number") + assert.Equal(t, test.expectedSpeedLoss, speedLoss, "speed loss") + assert.Equal(t, test.expectedLastSpeed, lastSpeed, "last speed") + assert.Equal(t, test.expectedMaxSpeed, maxSpeed, "max speed") + }) + } +} diff --git a/app/strength/capture_linux.go b/app/strength/capture_linux.go new file mode 100644 index 0000000..a97c8c3 --- /dev/null +++ b/app/strength/capture_linux.go @@ -0,0 +1,57 @@ +package strength + +import ( + "fmt" + "io" + "os" + "strconv" + "time" +) + +// Capture reads events from the device and send them to the channel +func (s *Strength) Capture(rawDataCh chan<- RawData) { + s.Log.V(2).Info("start strength capture") + + // TODO: How to handle an error opening the device? + loadCellFD, err := os.Open(s.Device) + if err != nil { + s.Log.Error(err, "Opening strength device") + return + } + defer loadCellFD.Close() + + loadValueRaw := make([]byte, 15) + var t time.Time + + for { + valueSize, err := loadCellFD.Read(loadValueRaw) + if err != nil { + s.Log.Error(err, "reading from the load cell, ingoring this measure. Wait 1s to retry") + time.Sleep(1 * time.Second) + continue + } + t = time.Now() + + _, err = loadCellFD.Seek(0, io.SeekStart) + if err != nil { + s.Log.Error(err, "seeking to the start of the file") + } + + // Only get the values readed except the new line + load, err := strconv.ParseFloat(string(loadValueRaw[0:valueSize-1]), 64) + if err != nil { + s.Log.Error(err, "parsing cell load readings to float") + } + + select { + case rawDataCh <- RawData{load, t}: + default: + s.Log.Error(fmt.Errorf("rawData channel is full"), "not able to send data to processor") + } + + // If this sleep is not set, it returns one value each 5ms and the + // next value will come after 120ms + // This sleeps averages the reads to ~25ms + time.Sleep(time.Duration(s.GatherTime) * time.Millisecond) + } +} diff --git a/app/strength/capture_notlinux.go b/app/strength/capture_notlinux.go new file mode 100644 index 0000000..df3ffb8 --- /dev/null +++ b/app/strength/capture_notlinux.go @@ -0,0 +1,8 @@ +// +build !linux + +package strength + +// Capture reads events from the device and send them to the channel +// Not implemented for windows +func (s *Strength) Capture(rawDataCh chan<- RawData) { +} diff --git a/app/strength/strength.go b/app/strength/strength.go new file mode 100644 index 0000000..8d75864 --- /dev/null +++ b/app/strength/strength.go @@ -0,0 +1,780 @@ +package strength + +/* +* https://www.desnivel.com/escalada-roca/entrenamiento/analizando-la-importancia-de-la-fuerza-en-la-escalada/ +* * measures: +* - MVC: max voluntary contraction +* - FTI: force-time integral +* - RFD: rate of force development +* * types of workouts: +* - MVC: for a predefined duration (7" for example), measure the strength. Metrics: +* - average strength during the period +* - max +* - min +* - deviation +* - seconds left +* - alarm when finished +* - FTI, could be one serie or multiple series (repeaters) +* - fti (integral force-time) +* - duty cycle (percentage "on" vs "off") +* - duration +* - training: +* - be able to set our MAX MCV and the percentage we want to train +* - RFD: +* - time to reach the max force (or 95? 99%?) + */ + +import ( + "fmt" + "math" + "math/rand" + "time" + + // TODO remove dependencies with speed package + "github.com/adrianlzt/piclimbing/backend/speed" + "github.com/go-logr/logr" + "gonum.org/v1/gonum/integrate" +) + +const ( + // LoadCellCalibrationFactor value to get readings in kg + // TODO create param to change force units to Newtons + LoadCellCalibrationFactor = 0.0000628694 + // LoadCellOffset value to get 0kg when the cell is hanging + LoadCellOffset = 8386793 + // StrengthCommandPause is the command to pause the gathering of data + StrengthCommandPause Command = "pause" + // StrengthCommandRestart is the command to restart the gathering of data + StrengthCommandRestart Command = "restart" + // StrengthCommandTare is the command to put the position to zero + StrengthCommandTare Command = "tare" + // StrengthCommandCalibrate is the command to adjust the delta increments of movement + StrengthCommandCalibrate Command = "calibrate" + // StrengthCommandWeight stores the weight of the climber + StrengthCommandWeight Command = "weight" + // StrengthCommandSimulate gnerate random data simulating an exercise + StrengthCommandSimulate Command = "simulate" + // StartCommand message sent to the client with the real start time detected + StartCommand Command = "start" + // EndCommand message sent to the client with the real end time detected + EndCommand Command = "end" + // StrengthStartThreshold is the threshold used to decide a strength test is being done + StrengthStartThreshold = 15.0 + // ClientChannelSize is the default size for channels sending data to the client + ClientChannelSize = 10 + // DefaultBodyWeight is the default value for body weight + DefaultBodyWeight = 74 + // Gravity value to convert from Kg to Newtons + Gravity = 9.80665 + // TareMessage text send to the client when executed command "tare" + TareMessage = "Tare done" + // CalibrationMessage text send to the client when executed the command "calibration" + CalibrationMessage = "Calibration done" + // UnknownMessage is the prefix of the text send to the client when coach received an command unkown + UnknownMessage = "Unkown command" + // MeasuringMessage text send to the client to notify that the app has detected the start of the exercise + MeasuringMessage = "Measuring..." + // FinishedMessage text send to the client to notify that the app has detected the end of the exercise + FinishedMessage = "Finished" + // LatestValueInterval is the lenght, in ms, of the latest data stored to make som calculations + LatestValueInterval = 500 +) + +// Strength represents the structure to measure strength +type Strength struct { + Log logr.Logger + Device string + // ClientSampling defines how often should be sent data to the client + ClientSampling time.Duration + // ExportChannel used to share calculated data + ExportChannel chan<- ExportData + // ControlChannel pass commands from the client to the coach + ControlChannel <-chan Control + // ClientMessagesChannel used by the coach to send messages to the client + ClientMessagesChannel chan<- ClientMsg + // GatherTime is the expected time distance between points, in milliseconds + GatherTime float64 + // BackendCmdChannel is used to signal client from start and end detection + BackendCmdChannel chan<- BackendCmd + + // BodyWeight of the climber + // TODO remove, should be in the web app + BodyWeight float64 + + // rawDataChannel pass data from the capturer to the processor + rawDataChannel chan RawData + // dataChannel pass data from the processor to the coach + dataChannel chan Data + + // processorControlChannel used by the coach to control the processor + processorControlChannel chan Control + + // Values used by the calculator to persist data between executions + // calculatorLatestValues stores the latest values to be able to calculate correctly exercise parameters + calculatorLatestValues []Data + + // calculatorExerciseStart marks the time when the exercise started + calculatorExerciseStart time.Time + // calculatorStrengthActive marks if a strength test is being done + calculatorStrengthActive bool + + // calculatorMaxStrength is the max force applied during the test + calculatorMaxStrength float64 + // calculatorAvgStrength is the slice of strength values while the exercise is being done, used to calculate the average + calculatorActiveValues []Data + + // active defines if the coach is ready or not + active bool +} + +// TODO clean unused structs +// Make private all not needed to be used outside + +// RawData represents a reading from the load cell +// timeNs is the time, in nanoseconds +type RawData struct { + value float64 + time time.Time +} + +// ClientMsg are the json messages passed to the client to notify things +// If the bell is on, when the message is received should make a sound +// TODO remove Bell, is being used? Move this channel to String? +// Use only this channel for commands response and anoter for the rest? +type ClientMsg struct { + Value string + Bell bool +} + +// Command are the available commands to send to the Coach +type Command string + +// Control is used to receive commands from the client +type Control struct { + Type Command + Value float64 +} + +// BackendCmd used to send commands to the client +// TODO refactor names to clarify usage +type BackendCmd struct { + Command *string + Value *float64 +} + +// Data represents the useful data generated from each event +type Data struct { + Strength float64 + Time time.Time + Interval time.Duration +} + +// ExportData is the data exported to be used by the external APIs +type ExportData struct { + // Time is elapsed time un seconds + Time *float64 + Strength *float64 + MaxStrength *float64 + AvgStrength *float64 + StrengthLoss *float64 + RFD *float64 + FTI *float64 +} + +// RunStrength starts the goroutines to measure and process speed +func (s *Strength) RunStrength() { + s.Log.V(2).Info("start strength") + + // TODO cuanto espacio poner en estos canales? + s.rawDataChannel = make(chan RawData, 10) + s.dataChannel = make(chan Data, 10) + s.processorControlChannel = make(chan Control, 10) + + numberOfPreviousValuesStored := int(LatestValueInterval / s.GatherTime) + s.calculatorLatestValues = make([]Data, numberOfPreviousValuesStored) + + // Default value + s.BodyWeight = DefaultBodyWeight + + go s.Capture(s.rawDataChannel) + go s.Process(s.rawDataChannel, s.processorControlChannel, s.dataChannel) + go s.Coach(s.dataChannel, s.ControlChannel, s.processorControlChannel) +} + +// Process get raw events and calculate strength. +// Send the data to the coach +// Could be controlled by the coach (to pause, reset, etc) +func (s *Strength) Process(rawDataCh <-chan RawData, procControlCh <-chan Control, dataCh chan<- Data) { + s.Log.V(2).Info("start strength process") + + // variables to calibrate readings + var strength float64 + var offset float64 = LoadCellOffset + calibrationFactor := LoadCellCalibrationFactor + + // Used to calculate the time used to get reads + lastReadTime := time.Now() + var readTime time.Duration + + // Control if generated data should be sent to the encoderData channel + // Wait for the restart command to start sending data to the coach + sendEvents := false + + for { + select { + // TODO remove coach commands that should not be here + case c := <-procControlCh: + s.Log.V(4).Info("process command", "value", c) + switch c.Type { + case StrengthCommandPause: + sendEvents = false + case StrengthCommandRestart: + sendEvents = true + case StrengthCommandTare: + offset += strength + s.Log.V(3).Info("tare command", "offset", offset) + case StrengthCommandCalibrate: + // c.Value is the % to increse/decrease + calibrationFactor *= (1 + c.Value/100) + s.Log.V(3).Info("calibrate", "value", c.Value, "calibrationFactor", calibrationFactor) + } + + case e := <-rawDataCh: + s.Log.V(4).Info("process load cell", "value", e.value, "time", e.time) + strength = (e.value - offset) * calibrationFactor + + readTime = e.time.Sub(lastReadTime) + lastReadTime = e.time + + if sendEvents { + // Send data without blocking. Let the processor run if the client or db queues are full + select { + case dataCh <- Data{strength, e.time, readTime}: + s.Log.V(5).Info("sent processed strength to coach", "strength", strength) + default: + s.Log.Error(fmt.Errorf("coach channel is full"), "not able to send data", "strength", strength) + } + } + } + } +} + +// Coach get the data processed and calculates useful info for the client +// dataCh should be receive only, but we send data on it with the simulation command +func (s *Strength) Coach(dataCh chan Data, controlCh <-chan Control, processorControlCh chan<- Control) { + + // Defines if coach is working. Set by the client with commands + s.active = false + // Used to signal the calculator to reset to initial state + reset := false + + // Store the last time a value was pushed to the client + var previousSent time.Time + // Uniq identifier for each of the metric sent + var id int + + for { + select { + // Handle commands + // TODO add sampling command to be able to increase/reduce the speed of sampling, modifying s.GatherTime + case c := <-controlCh: + s.Log.V(3).Info("coach command", "cmd", c.Type) + switch c.Type { + case StrengthCommandPause: + // TODO refactor how to handle pause? + // Now go is detecting the end, notifying the frontend and the frontend sending + // back a command to pause + // Maybe it has sense, as it is the UI which have to decide what to do + s.active = false + // Pause the gather of metrics + processorControlCh <- c + msg := ClientMsg{speed.PausedMessage, false} + err := s.sendClientMsg(msg) + if err != nil { + s.Log.Error(err, "sending message to client", "msg", msg) + } + case StrengthCommandRestart: + s.active = true + // Reset signal to calculator + reset = true + // Restart the gather of metrics + processorControlCh <- c + msg := ClientMsg{speed.StartMessage, false} + err := s.sendClientMsg(msg) + if err != nil { + s.Log.Error(err, "sending message to client", "msg", msg) + } + case StrengthCommandTare: + // Just send the command to the processor + processorControlCh <- c + msg := ClientMsg{TareMessage, false} + err := s.sendClientMsg(msg) + if err != nil { + s.Log.Error(err, "sending message to client", "msg", msg) + } + case StrengthCommandCalibrate: + // Just send the command to the processor + processorControlCh <- c + msg := ClientMsg{CalibrationMessage, false} + err := s.sendClientMsg(msg) + if err != nil { + s.Log.Error(err, "sending message to client", "msg", msg) + } + case StrengthCommandSimulate: + msg := ClientMsg{"Simulation start", false} + err := s.sendClientMsg(msg) + if err != nil { + s.Log.Error(err, "sending message to client", "msg", msg) + } + // Pause the generator + processorControlCh <- Control{StrengthCommandPause, 0} + + // Generate random values + go func() { + rand.Seed(time.Now().UnixNano()) + maxForce := 50 + rand.Float64()*30 + startDuration := time.Duration(rand.Intn(300))*time.Millisecond + 100*time.Millisecond + duration := time.Duration(rand.Intn(7))*time.Second + 3*time.Second + endDuration := time.Duration(rand.Intn(300))*time.Millisecond + 100*time.Millisecond + loss := float64(rand.Intn(25)) / 100.0 + step := 20 * time.Millisecond + s.Log.V(3).Info("Strength simulator", + "maxForce", maxForce, + "startDuration", startDuration.Seconds(), + "duration", duration.Seconds(), + "endDuration", endDuration.Seconds(), + "loss", loss, + "step", step.Seconds(), + ) + + // Increasing force + for i := 0; i < int(startDuration/step); i++ { + dataCh <- Data{ + float64(i) * maxForce / float64(startDuration/step), + time.Now(), + time.Duration(20 * time.Millisecond), + } + time.Sleep(20 * time.Millisecond) + } + + // Steady force + for i := 0; i < int(duration/step); i++ { + dataCh <- Data{ + maxForce - float64(i)*maxForce*loss/float64(duration/step), + time.Now(), + time.Duration(20 * time.Millisecond), + } + time.Sleep(20 * time.Millisecond) + } + + // Decreasing force + for i := 0; i < int(endDuration/step); i++ { + dataCh <- Data{ + maxForce*loss/float64(duration/step) - float64(i)*maxForce*loss/float64(endDuration/step), + time.Now(), + time.Duration(20 * time.Millisecond), + } + time.Sleep(20 * time.Millisecond) + } + s.Log.V(3).Info("Strength simulator end") + }() + default: + s.Log.Error(fmt.Errorf("unkown command"), "coach", "type", c.Type) + text := fmt.Sprintf("%s: %s", UnknownMessage, c.Type) + msg := ClientMsg{text, false} + err := s.sendClientMsg(msg) + if err != nil { + s.Log.Error(err, "sending message to client", "msg", msg) + } + } + + // Handle new data + case d := <-dataCh: + // Only process new data if it is active + if s.active { + exerciseDuration, maxStrength, avgStrength, strengthLoss, rfd, fti, dutyCycle, controlCmd := s.Calculator(d, reset) + reset = false + + s.Log.V(4).Info("send data to client", + "strength", d.Strength, + "exerciseDuration", exerciseDuration.Seconds(), + "maxStrength", maxStrength, + "avgStrength", avgStrength, + "strengthLoss", strengthLoss, + "rfd", rfd, + "fti", fti, + "dutyCucle", dutyCycle, + "controlCmd", controlCmd, + ) + + // Send backend commands to the client + // Sends start and end events + if controlCmd != nil { + select { + case s.BackendCmdChannel <- *controlCmd: + default: + s.Log.Error(fmt.Errorf("channel full"), "Cannot send data", "channel", "BackendCmdChannel") + } + } + + // Do not send data to the client faster than ClientSampling + now := time.Now() + if now.Sub(previousSent) < s.ClientSampling { + continue + } + previousSent = now + id++ + + duration := float64(exerciseDuration.Seconds()) + strength := d.Strength + + select { + case s.ExportChannel <- ExportData{ + Time: &duration, + Strength: &strength, + MaxStrength: maxStrength, + AvgStrength: avgStrength, + StrengthLoss: strengthLoss, + RFD: rfd, + FTI: fti, + }: + default: + s.Log.Error(fmt.Errorf("channel full"), "Cannot send data", "channel", "ExportData") + } + } + } + } +} + +// sendClientMsg used by the coach to send messages to the client +func (s *Strength) sendClientMsg(value ClientMsg) error { + s.Log.V(3).Info("Send message to client", "msg", value) + select { + case s.ClientMessagesChannel <- value: + default: + return fmt.Errorf("client channel is full") + } + return nil +} + +// Calculator get the strength data from the sensor and calculate all the values needed by the coach +// Reset parameters is used to signal a new serie +// Pointer values could be null if they are not yet available +// strengthLoss is the loss of strength in percentage (0-100) +func (s *Strength) Calculator(data Data, reset bool) (exerciseDuration time.Duration, maxStrength *float64, avgStrength *float64, strengthLoss *float64, rfd *float64, fti *float64, dutyCycle *float64, cmd *BackendCmd) { + if reset { + s.calculatorLatestValues = s.calculatorLatestValues[:0] + s.calculatorActiveValues = s.calculatorActiveValues[:0] + s.calculatorMaxStrength = 0 + } + + // Store the latest numberOfPreviousValuesStored of values + s.calculatorLatestValues = append(s.calculatorLatestValues, data) + + // NumberOfPreviousValuesStored is the size of the slice to store recent values + numberOfPreviousValuesStored := int(LatestValueInterval / s.GatherTime) + if numberOfPreviousValuesStored != 0 && len(s.calculatorLatestValues) > numberOfPreviousValuesStored { + // Removes the oldest value + // TODO change the expresion to: s.calculatorLatestValues[len(s.calculatorLatestValues)-numberOfPreviousValuesStored:len(numberOfPreviousValuesStored)] ? + s.calculatorLatestValues = s.calculatorLatestValues[1:numberOfPreviousValuesStored] + } + + if !s.calculatorStrengthActive { + start, positionRealStart := s.calculateStart() + // Starting the exercise + if start { + s.calculatorStrengthActive = true + s.calculatorExerciseStart = s.calculatorLatestValues[positionRealStart].Time + + // Add to the slice of active values all the data from the real start of the exercise, except the last point, that will be added later + // Empty active values slice if the calculated start is the same as the last value + positionOfLastValue := len(s.calculatorLatestValues) - 2 + if positionRealStart < positionOfLastValue { + s.calculatorActiveValues = s.calculatorLatestValues[positionRealStart:positionOfLastValue] + } else { + s.calculatorActiveValues = s.calculatorActiveValues[:0] + } + + // TODO probably this should not be here and should be the coach the responsible of handling this message + // TODO are we using this? remove? + //s.sendClientMsg(ClientMsg{MeasuringMessage, false}) + // + s.Log.V(3).Info("start event detected") + + c := "start" + v := float64(s.calculatorExerciseStart.UnixNano()) + startCommand := BackendCmd{&c, &v} + cmd = &startCommand + } + } + + // If the exercise is being done, calculate data + if s.calculatorStrengthActive { + // Decides that the exercise has finished + end, positionRealEnd := s.calculateEnd() + // Ending the exercise and run the last round of measures + if end { + s.calculatorStrengthActive = false + // Correct the calculatorActiveValues, removing values after the real end + s.calculatorActiveValues = s.calculatorActiveValues[0:positionRealEnd] + + // We have finished, clean data. Avoid false starts with old data + s.calculatorLatestValues = s.calculatorLatestValues[:0] + + // TODO probably this should not be here and should be the coach the responsible of handling this message + // TODO are we using this? remove? + //s.sendClientMsg(ClientMsg{FinishedMessage, false}) + + s.Log.V(3).Info("start event detected") + + realEndTime := s.calculatorActiveValues[positionRealEnd-1].Time + c := "end" + v := float64(realEndTime.UnixNano()) / 1e9 + endCommand := BackendCmd{&c, &v} + // TODO check start end end commands are being sent twice and after end, it send another + // two starts and two ends + cmd = &endCommand + } else { + s.calculatorActiveValues = append(s.calculatorActiveValues, data) + } + + if data.Strength > s.calculatorMaxStrength { + s.calculatorMaxStrength = data.Strength + } + + // "data" could be invalid as we have finished and that value is after the real end + // Use this value as is the last valid value after real end reconfiguration + lastValidData := s.calculatorActiveValues[len(s.calculatorActiveValues)-1] + + exerciseDuration = lastValidData.Time.Sub(s.calculatorExerciseStart) + maxStrength = &s.calculatorMaxStrength + as := AverageStrength(s.calculatorActiveValues) + avgStrength = &as + + sl := 100 - (100 * lastValidData.Strength / *maxStrength) + strengthLoss = &sl + + r := RFD(s.calculatorActiveValues) + rfd = &r + + // Calculate FTI only if we have enough values (gonum restriction) + // Not normalized + if len(s.calculatorActiveValues) >= 3 { + f := FTI(s.calculatorActiveValues) + fti = &f + } + // This should return the real duty cycle vs the programmed one + d := DutyCycle(s.calculatorActiveValues) + dutyCycle = &d + } + + return +} + +// DutyCycle calculate the percentage of time doing force vs resting +// It decides when it's "on" and when "off" based on the StrengthStartThreshold +func DutyCycle(data []Data) float64 { + // TODO: it is worth it? + return 0 +} + +// RFD the highest positive value from the first derivative of the force signal (kg/s) +// https://journals.lww.com/nsca-jscr/Fulltext/2013/02000/Differences_in_Climbing_Specific_Strength_Between.5.aspx +func RFD(data []Data) float64 { + max := 0.0 + firstDerivateData := Derivate(data) + for _, d := range firstDerivateData { + if d > max { + max = d + } + } + return max +} + +// Derivate calculates the discrete derivative for an slice of StrengthData values +func Derivate(data []Data) []float64 { + res := []float64{} + for i := 1; i < len(data); i++ { + df := data[i].Strength - data[i-1].Strength + dt := data[i].Time.Sub(data[i-1].Time) + res = append(res, df/float64(dt.Seconds())) + } + return res +} + +// Difference calculate the difference between values of a slice of float64 values +func Difference(data []float64) []float64 { + res := []float64{} + for i := 1; i < len(data); i++ { + res = append(res, data[i]-data[i-1]) + } + return res +} + +// FirstThresholdCross return the position of the first value crossing, or matching, the threshold, +// in absolute values +func FirstThresholdCross(data []float64, threshold float64) (int, error) { + for k, v := range data { + if math.Abs(v) >= math.Abs(threshold) { + return k, nil + } + } + return 0, fmt.Errorf("no value crossed the threshold") +} + +// MovingAverage returns the moving average of blocks of n items +func MovingAverage(data []float64, n int) (res []float64) { + for i := 1; i <= len(data); i++ { + backCount := i - n + if backCount < 0 { + backCount = 0 + } + + res = append(res, Average(data[backCount:i])) + } + + return +} + +// Average return the average value of a slice of float64 values +func Average(data []float64) float64 { + sum := 0.0 + for _, v := range data { + sum += v + } + return sum / float64(len(data)) +} + +// FTI calculate the integraf force-time from a serie of StrengthData values +// Return value is expressed in Newton*second +func FTI(data []Data) float64 { + fx := []float64{} + x := []float64{} + + for _, v := range data { + // Convert mass to newtons + fx = append(fx, v.Strength*Gravity) + // Convert time to unix epoch float64 + x = append(x, float64(v.Time.UnixNano())/1e9) + } + + return integrate.Simpsons(x, fx) +} + +// calculateStart decides, based on the latest values, when the strength test has started. +// To make this calculation less error prone, this function could not detect the start of the exercise in the precise moment it starts, +// and will wait to more measures to come to be accurate. +// This is the reason to also return the position of the slice of latest values when the exercise really started +// TODO this method is not going to be useful to measure RFD, because we are considering the start time later than the real start +// Now it always return the latest value as the real start +// +// How to detect a new exercise has started +// To get a good value for RFD and FTI we need to know the exact start time. +// The climber could load the cell while preparing or even have some load in the cell before starting +// We could store the previous 500ms of values and when we detect a high load, indicating the exercise has begin, go back in time to +// get the exact start time +func (s *Strength) calculateStart() (bool, int) { + // Calculate the average over the lat 5 values, or the total of values of there are less than five + lastValues := len(s.calculatorLatestValues) - 5 + if lastValues < 0 { + lastValues = 0 + } + + if AverageStrength(s.calculatorLatestValues[lastValues:]) > StrengthStartThreshold { + realStartPosition := len(s.calculatorLatestValues) - 1 + s.Log.V(3).Info("start exercise", "real start", s.calculatorLatestValues[realStartPosition].Time, "strength", s.calculatorLatestValues[realStartPosition].Strength) + return true, realStartPosition + } + return false, 0 +} + +// calculateEnd decides when the exercise has finished, based on a big drop of force +// The real end is when the climber started to release the force. Is an index number relative to the s.calculatorActiveValues +// TODO improve this function. Too confusing +// TODO how to handle repeaters? How to differenciate finished from rest? Maybe need a command from the client +func (s *Strength) calculateEnd() (bool, int) { + // If it has no data, it has not finished + // Could not finish if we do not have at least two values + if len(s.calculatorActiveValues) <= 2 { + return false, 0 + } + + // Use the average of the latest 5 points (or less, if we don't have enough) to decide if the force + // has crossed the threshold to consider the exercise finished + startIndex := 0 + if len(s.calculatorActiveValues) >= 5 { + startIndex = len(s.calculatorActiveValues) - 5 + } + + // TODO remove this threshold detect and use only the derivate? + // With threshold, we are sending "erroneous" data to the client before we + // detect the real end + if AverageStrength(s.calculatorActiveValues[startIndex:]) < StrengthStartThreshold { + // Once we have detected a big drop on the values, we use de derivative to find + // when does it started. + // We use the last 500ms + // TODO if the climber releases the force slowly, we won't detect the finish + backPositions := int(500 / s.GatherTime) + if backPositions > len(s.calculatorActiveValues) { + backPositions = len(s.calculatorActiveValues) - 1 + } + + startIndex = len(s.calculatorActiveValues) - backPositions + d := Derivate(s.calculatorActiveValues[startIndex:]) + + // Smooth the values + // TODO try to use this values to calculate end + /* + dMovAvg := MovingAverage(d, int(backPositions/10)) + s.Log.V(1).Info("End, moving average", "dMovAvg", dMovAvg) + */ + + // Get the first value higher than the average of diff values + n, err := FirstThresholdCross(d, Average(d)) + if err != nil { + // An error could happend if there is not enough values, but que filter at the beggining + // of the function should return if there is not enough values + return false, 0 + } + + // n is the position in the "d" slice with a value higher than the average + // The "d" slice have one element less than the slice passed as the parameter. + // So, a position i in the "d" slice means the value we are looking for is i+1 in + // the values slice, but value is the first big drop, so we skip it + endIndex := startIndex + n + + realEndTime := s.calculatorActiveValues[endIndex] + s.Log.V(3).Info("end exercise", "real end", realEndTime) + + return true, endIndex + + /* + // Smooth the values + dMovAvg := MovingAverage(d, int(backPositions/10)) + + // Get the array of value diferences of the averaged values + dif := Difference(dMovAvg[int(backPositions/10):len(dMovAvg)]) + s.Log.V(1).Info("End, diferences", "dif", dif) + + + // n is the position of the "dif" slice crossing the average + + s.Log.V(1).Info("", "dd", dd) + + realEndTime := s.calculatorActiveValues[len(s.calculatorActiveValues)-1].Time + s.Log.V(3).Info("end exercise", "real end", realEndTime) + + return true, len(s.calculatorActiveValues) - 1 + */ + } + return false, 0 +} + +// AverageStrength calculate the average of a slice of Data values +func AverageStrength(data []Data) float64 { + sum := 0.0 + for _, v := range data { + sum += v.Strength + } + return sum / float64(len(data)) +} diff --git a/hardware/linear_encoder/Braincoder.pdf b/hardware/linear_encoder/Braincoder.pdf new file mode 100644 index 0000000..73def3f Binary files /dev/null and b/hardware/linear_encoder/Braincoder.pdf differ diff --git a/hardware/linear_encoder/pieces/Carcasa_Circuito.stl b/hardware/linear_encoder/pieces/Carcasa_Circuito.stl new file mode 100644 index 0000000..5c7cfbd Binary files /dev/null and b/hardware/linear_encoder/pieces/Carcasa_Circuito.stl differ diff --git a/hardware/linear_encoder/pieces/Carcasa_Inferior.stl b/hardware/linear_encoder/pieces/Carcasa_Inferior.stl new file mode 100644 index 0000000..ded7828 Binary files /dev/null and b/hardware/linear_encoder/pieces/Carcasa_Inferior.stl differ diff --git a/hardware/linear_encoder/pieces/Carcasa_Superior.stl b/hardware/linear_encoder/pieces/Carcasa_Superior.stl new file mode 100644 index 0000000..75b02a4 Binary files /dev/null and b/hardware/linear_encoder/pieces/Carcasa_Superior.stl differ diff --git a/hardware/linear_encoder/pieces/Eje.stl b/hardware/linear_encoder/pieces/Eje.stl new file mode 100644 index 0000000..6e44c16 Binary files /dev/null and b/hardware/linear_encoder/pieces/Eje.stl differ diff --git a/hardware/linear_encoder/pieces/Enganche.STL b/hardware/linear_encoder/pieces/Enganche.STL new file mode 100644 index 0000000..050a044 Binary files /dev/null and b/hardware/linear_encoder/pieces/Enganche.STL differ diff --git a/hardware/linear_encoder/pieces/Soporte_Muelle.stl b/hardware/linear_encoder/pieces/Soporte_Muelle.stl new file mode 100644 index 0000000..bc1afbf Binary files /dev/null and b/hardware/linear_encoder/pieces/Soporte_Muelle.stl differ diff --git a/hardware/linear_encoder/pieces/Tapa_Eje.stl b/hardware/linear_encoder/pieces/Tapa_Eje.stl new file mode 100644 index 0000000..de263be Binary files /dev/null and b/hardware/linear_encoder/pieces/Tapa_Eje.stl differ diff --git a/hardware/linear_encoder/pieces/Tapa_Pantalla.stl b/hardware/linear_encoder/pieces/Tapa_Pantalla.stl new file mode 100644 index 0000000..e0a2654 Binary files /dev/null and b/hardware/linear_encoder/pieces/Tapa_Pantalla.stl differ diff --git a/images/hx711_fix.png b/images/hx711_fix.png new file mode 100644 index 0000000..c3ff4c2 Binary files /dev/null and b/images/hx711_fix.png differ diff --git a/images/logo.excalidraw b/images/logo.excalidraw new file mode 100644 index 0000000..210eebf --- /dev/null +++ b/images/logo.excalidraw @@ -0,0 +1,402 @@ +{ + "type": "excalidraw", + "version": 1, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "TrBtnQIEZKxLsOQlHVsCH", + "type": "line", + "x": 746, + "y": 460, + "width": 5, + "height": 322, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1346092308, + "version": 58, + "versionNonce": 260332972, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + -5, + 322 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "fZgEc_7kJNx2mqWog6N13", + "type": "line", + "x": 942, + "y": 462, + "width": 5, + "height": 330, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1488187180, + "version": 62, + "versionNonce": 1606066964, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + -5, + 330 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "5m9nGtqnUwpjdOVFRHTnw", + "type": "line", + "x": 659, + "y": 453, + "width": 373, + "height": 3, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 2022718484, + "version": 39, + "versionNonce": 151242796, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + 373, + -3 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "1P1rYZGsPPqoR5MGw21q9", + "type": "ellipse", + "x": 823, + "y": 497, + "width": 42, + "height": 54, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 889333676, + "version": 59, + "versionNonce": 1247549484, + "isDeleted": false + }, + { + "id": "l-Tj1j_IsR51cdKej3Dt0", + "type": "line", + "x": 844, + "y": 554, + "width": 1, + "height": 108, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1132230572, + "version": 70, + "versionNonce": 1694475284, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + 1, + 108 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "Gj1-AnGZaod32lADT-UQN", + "type": "line", + "x": 845, + "y": 662, + "width": 37, + "height": 43, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1394611884, + "version": 28, + "versionNonce": 203053460, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + -37, + 43 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "9H3UW55JTlNDdwdo5-J6C", + "type": "line", + "x": 808, + "y": 705, + "width": 41, + "height": 54, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 384233364, + "version": 27, + "versionNonce": 633822996, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + 41, + 54 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "BhHKijWHenG6EUTmbaQqP", + "type": "line", + "x": 846, + "y": 668, + "width": 26, + "height": 36, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1522751020, + "version": 12, + "versionNonce": 1346852372, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + 26, + 36 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "0g0aaUF5FUMb6VJC6rOpm", + "type": "line", + "x": 872, + "y": 704, + "width": 48, + "height": 55, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1326123412, + "version": 23, + "versionNonce": 634301972, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + -48, + 55 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "wD2DWEM3TSP8v60MT_Mib", + "type": "line", + "x": 843, + "y": 593, + "width": 45, + "height": 27, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1544827308, + "version": 16, + "versionNonce": 219254164, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + -45, + -27 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "_l9xPn2KgrKv8CT1DZelG", + "type": "line", + "x": 798, + "y": 566, + "width": 5, + "height": 108, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 2117553812, + "version": 21, + "versionNonce": 729408916, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + -5, + -108 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "vfY5nskJcD2JyKGJlHG-y", + "type": "line", + "x": 852, + "y": 588, + "width": 35, + "height": 29, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 1417985196, + "version": 19, + "versionNonce": 1271225132, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + 35, + -29 + ] + ], + "lastCommittedPoint": null + }, + { + "id": "PPOi0xeqPZPegxofWLdhL", + "type": "line", + "x": 887, + "y": 560, + "width": 8, + "height": 106, + "angle": 0, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "seed": 991945900, + "version": 26, + "versionNonce": 1124863508, + "isDeleted": false, + "points": [ + [ + 0, + 0 + ], + [ + 8, + -106 + ] + ], + "lastCommittedPoint": null + } + ], + "appState": { + "viewBackgroundColor": "#ffffff" + } +} \ No newline at end of file diff --git a/raspbian/kernel_1.20200205-1__4.19.97/README.md b/raspbian/kernel_1.20200205-1__4.19.97/README.md new file mode 100644 index 0000000..27fae59 --- /dev/null +++ b/raspbian/kernel_1.20200205-1__4.19.97/README.md @@ -0,0 +1,14 @@ +# HX711 +These files are used to access the HX711 device from Linux. + +``hx711.ko``: kernel module for the hx711, modified to have a faster sampling. +``hx711.c.patch``: modifications made to the driver. I do not have a explanation for this behaviour. I talked with Andreas Klinger, the developer of the driver, but he did not understand neither. More tests are needed to understand why this is happening. + +The kernel debug level should be increased to level 5 (by default it is 4) to increse the sampling speed: +``` +echo 5 > /proc/sys/kernel/printk +``` + +``hx711-overlay.dts``: to load external hardware in Raspbian it should be specified in the [Device Tree](https://www.raspberrypi.org/documentation/configuration/device-tree.md). This file load the hx711 device using the specified pins. +``hx711.dtbo``: compiled version of the above file + diff --git a/raspbian/kernel_1.20200205-1__4.19.97/hx711-overlay.dts b/raspbian/kernel_1.20200205-1__4.19.97/hx711-overlay.dts new file mode 100644 index 0000000..879e3c8 --- /dev/null +++ b/raspbian/kernel_1.20200205-1__4.19.97/hx711-overlay.dts @@ -0,0 +1,22 @@ +/dts-v1/; +/plugin/; + +#include + +/ { + compatible = "brcm,bcm2835"; + + fragment@0 { + target-path = "/"; + __overlay__ { + + hx711: hx711 { + compatible = "avia,hx711"; + sck-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>; + dout-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; + avdd-supply = <&vdd_3v3_reg>; + status = "okay"; + }; + }; + }; +}; diff --git a/raspbian/kernel_1.20200205-1__4.19.97/hx711.c.patch b/raspbian/kernel_1.20200205-1__4.19.97/hx711.c.patch new file mode 100644 index 0000000..7d1a3db --- /dev/null +++ b/raspbian/kernel_1.20200205-1__4.19.97/hx711.c.patch @@ -0,0 +1,18 @@ +--- iio/adc/hx711.c 2020-03-26 21:02:34.243411645 +0100 ++++ iio/adc/hx711.c.fast_printk 2020-03-26 21:03:42.154374200 +0100 +@@ -292,6 +292,7 @@ + const struct iio_chan_spec *chan, + int *val, int *val2, long mask) + { ++ printk("hx711_read_raw START"); + struct hx711_data *hx711_data = iio_priv(indio_dev); + + switch (mask) { +@@ -305,6 +306,7 @@ + if (*val < 0) + return *val; + ++ printk("hx711_read_raw END"); + return IIO_VAL_INT; + case IIO_CHAN_INFO_SCALE: + *val = 0; diff --git a/raspbian/kernel_1.20200205-1__4.19.97/hx711.dtbo b/raspbian/kernel_1.20200205-1__4.19.97/hx711.dtbo new file mode 100644 index 0000000..6b91241 Binary files /dev/null and b/raspbian/kernel_1.20200205-1__4.19.97/hx711.dtbo differ diff --git a/raspbian/kernel_1.20200205-1__4.19.97/hx711.ko_printk b/raspbian/kernel_1.20200205-1__4.19.97/hx711.ko_printk new file mode 100644 index 0000000..092a7cd Binary files /dev/null and b/raspbian/kernel_1.20200205-1__4.19.97/hx711.ko_printk differ